Skip to main content
Glama

Server Details

Creative-intelligence MCP for campaign strategy, ad builds, QA, and reporting.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.8% over 77 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

C2.6/5.0

Scored across 136 tools

Disambiguation2/5

The set is riddled with indistinguishable duplicates: build_ad, leanriq_build_ad, and leanriq_build_agent_ad are functionally identical, and nearly every tool has a leanriq_-prefixed deprecated alias (e.g. get_brand_profile/leanriq_get_brand_profile, qa_creative/leanriq_qa_creative). Agents cannot reliably choose between a canonical tool and its alias, and near-neighbors like get_capabilities vs get_leanriq_capabilities compound the confusion. A few tools (e.g. build_dooh vs build_videoad) are genuinely distinct, but overall boundaries are blurry.

Naming Consistency3/5

Most tools follow a snake_case verb_noun pattern (list_campaigns, create_advertiser, archive_creative), which is readable. However, consistency breaks with the large family of leanriq_-prefixed aliases, an odd leanr_build_campaign_creative_set, and noun-only or verb-less names like get_current_seat and leanriq_current_seat. The mixed prefixing makes the convention only partially predictable.

Tool Count1/5

136 tools is an extreme overload for this domain, and roughly 35-40 of them are explicit deprecated aliases that duplicate existing tools. Even discounting aliases, the surface is far larger than needed, and the duplication signals a registry that was never pruned. This is a severe mismatch.

Completeness4/5

Coverage of the apparent domain is broad: advertisers, campaigns, creatives (create/version/clone/revise/restore/export/QA), flights, trafficking, ad-server tags, brand, competitor/world intelligence, seats, and durable task lifecycle all have tools. Core CRUD and lifecycle paths exist with few obvious dead ends. The main defect is redundancy rather than missing capability.

Available Tools

136 tools
archive_advertiserarchive advertiserC
DestructiveIdempotent
Inspect

archive advertiser. Classification: writes to Studio, destructive. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
dryRunNo
seatIdNo
flightIdNo
seatNameNo
accountIdYes
approvalIdNo
campaignIdNo
creativeIdNo
resourceIdNo
advertiserIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, but the description adds real value beyond them: mutation modes (validate_only, preview_only, execute), the partial-failure policy (completed_items_not_rolled_back), synchronous execution, and the deterministic retry-key derivation. The seat-authorisation requirement for writes is genuinely useful operational context. It stops short of 5 because much of the remaining text is generic output-formatting boilerplate rather than tool behavior.

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

Conciseness2/5

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

It opens with the classification facts, which is well front-loaded, but is then padded with a long block of generic presentation instructions ('use assistantSummary first', 'never display raw JSON') that applies to every tool rather than this one. That boilerplate crowds out the tool-specific information an agent actually needs.

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?

An output schema exists, so return values need not be explained, and the description does cover the safety/precondition profile for a destructive mutation. However, for a 24-parameter nested-schema write with 0% parameter documentation and no optimistic-concurrency guidance for expectedVersion, it is not complete enough to invoke confidently without guesswork.

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 0% across 24 parameters, so the description carries the full explanatory burden, yet it only addresses idempotencyKey and seatId/seatName. The two required parameters (accountId, advertiserId) are unexplained, and expectedVersion, dryRun, and the many locale/market parameters have no semantics at all; notably the relationship between dryRun and the advertised mutation modes is never stated.

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

Purpose3/5

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

The description restates the title ('archive advertiser') and adds classification metadata ('writes to Studio, destructive'), which tells the agent this is a destructive write, but it never explains what archiving an advertiser actually does (hard delete, soft hide, cascade to campaigns/creatives) or how it differs from update_advertiser or delete_flight. The verb+resource is identifiable, so it is not pure tautology, but the semantics are left implicit.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance relative to the many sibling mutation tools (update_advertiser, archive_campaign, archive_creative). The only selection-relevant content is a precondition ('when more than one seat is authorised, seatId or seatName must be supplied') and the idempotency-key default, which are prerequisites rather than routing guidance.

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

archive_campaignarchive campaignB
DestructiveIdempotent
Inspect

archive campaign. Classification: writes to Studio, destructive. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
dryRunNo
seatIdNo
flightIdNo
seatNameNo
accountIdYes
approvalIdNo
campaignIdYes
creativeIdNo
resourceIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.3/5.0
Behavior5/5

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

Beyond the annotations (destructive, idempotent, closed-world, not read-only), the description discloses synchronous execution, that task support is forbidden, the partial-failure policy 'completed_items_not_rolled_back', and the deterministic idempotency-key derivation on omitted idempotencyKey. The seat-selection requirement for writes is an auth/eligibility constraint that annotations do not capture.

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

Conciseness3/5

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

The purpose is front-loaded, but the body is a dense run-on of server-wide boilerplate about JSON presentation, assistantSummary usage, and next-action suggestions that is not specific to archiving a campaign. Every sentence is grammatical and information-bearing, yet a large share belongs in shared agent instructions rather than a tool definition.

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?

An output schema exists, so return values need no explanation, and annotations plus the text cover safety and idempotency well. The gap is on the input side: 24 undocumented parameters with 0% schema coverage, and no statement of what archiving actually does to the campaign (halts delivery? becomes read-only?), leaves an agent under-informed for a destructive write.

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 0% across 24 parameters, so the description must carry the burden and it largely does not. It explains only seatId/seatName (write-time seat requirement) and idempotencyKey (retry-key derivation); accountId, campaignId, dryRun, expectedVersion, approvalId, flightId, and all locale/market fields remain unexplained.

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

Purpose3/5

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

The opening 'archive campaign' is essentially a restatement of the name and title, so the agent learns nothing new from it. The classification line ('writes to Studio, destructive') does clarify the operation class, but nothing distinguishes this from siblings such as archive_advertiser, archive_creative, delete_flight, or update_campaign used to pause delivery.

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 lists mutation modes (validate_only, preview_only, execute) and states that seatId/seatName must be supplied on a write when multiple seats are authorised, which are useful call-time conditions. However, it never says when to archive rather than delete, pause via update_campaign, or leave a campaign running, and gives no prerequisites for approvalId or expectedVersion.

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

archive_creativearchive creativeB
DestructiveIdempotent
Inspect

archive creative. Classification: writes to Studio, destructive. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
dryRunNo
seatIdNo
flightIdNo
seatNameNo
accountIdYes
approvalIdNo
campaignIdNo
creativeIdYes
resourceIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare destructive=true, readOnly=false, idempotent=true, so the safety profile is covered. The description adds genuinely useful behavior beyond that: synchronous execution, task support forbidden, mutation modes, and especially the partial-failure policy (completed_items_not_rolled_back) and idempotency-key derivation. The multi-seat requirement for writes is also valuable, though some of this is generic boilerplate applied across tools.

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

Conciseness3/5

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

The classification block is front-loaded effectively, but a large fraction of the text (assistantSummary usage, never display raw JSON, mention IDs only when useful, prefer concise language) is generic response-formatting boilerplate that is not specific to this tool and inflates length.

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?

An output schema exists, so return-value explanation is not required, and the description covers the operation's behavior reasonably. However, for a destructive 24-parameter mutation with 0% param coverage and close siblings, it leaves the invocation parameters and resource-distinction gaps unfilled.

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 0% across 24 parameters, so the description bears the full burden and does not meet it. Only idempotencyKey and seatId/seatName receive semantic explanation; accountId, creativeId, dryRun, expectedVersion, and the large set of locale/market parameters are undocumented in both schema and description.

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

Purpose3/5

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

The opening 'archive creative' restates the name almost verbatim and never differentiates from the near-identical siblings archive_advertiser and archive_campaign beyond the resource noun. 'Classification: writes to Studio, destructive' adds some substance about the operation type, but the core purpose (what archiving removes or hides, reversibility) is left unstated.

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 when-to-use or when-not-to-use guidance, and no comparison against archive/delete/restore alternatives. It does provide invocation context via the mutation modes (validate_only, preview_only, execute) and the seat requirement, which is more than nothing but falls short of real routing guidance.

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

build_adCreate AI Display CreativeDocuments from objective and requestedFormats without pre-existing creatives. Optional outputs requests static JPEG/PNG delivery after save_to_studio while retaining the editable document. Export existing versions with export_creative. Build and save existing Studio creative records. When campaignId or campaignName is supplied, LeanrIQ resolves the complete persisted campaign inventory, uses each saved brief, approved asset set, and eligible global or advertiser template, then runs the canonical Studio Gold build path. Campaign-scoped calls save by default; use persistence preview_only only for an unsaved ad-hoc preview.A
Idempotent
Inspect

Create AI Display CreativeDocuments from objective and requestedFormats without pre-existing creatives. Optional outputs requests static JPEG/PNG delivery after save_to_studio while retaining the editable document. Export existing versions with export_creative. Build and save existing Studio creative records. When campaignId or campaignName is supplied, LeanrIQ resolves the complete persisted campaign inventory, uses each saved brief, approved asset set, and eligible global or advertiser template, then runs the canonical Studio Gold build path. Campaign-scoped calls save by default; use persistence preview_only only for an unsaved ad-hoc preview.. Classification: creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
briefNo
forceNo
inputNo
assetsNo
promptNo
seatIdNo
taskIdNo
assetIdNo
outputsNoOptional editable/static JPEG/PNG delivery requirements. Studio persistence is required for static output.
audienceNo
campaignNo
creativeNo
flightIdNo
seatNameNo
templateNo
accountIdNo
objectiveNo
advertiserNo
campaignIdNo
creativeIdNo
templateIdNo
creativeIdsNo
persistenceNo
advertiserIdNo
instructionsNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
requestedFormatsNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
skipTraffickedRebuildNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A4/5.0
Behavior5/5

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

Substantially exceeds the annotations: it discloses billable AI usage, durable execution, the validate_only/preview_only/execute mutation modes, a completed_items_not_rolled_back partial-failure policy, and two operational constraints not in the schema (automatic deterministic idempotencyKey derivation on mutation replay, and the requirement that seatId/seatName be passed on the exact write call when multiple seats are authorised). It also states the agent-facing response contract (use assistantSummary, don't dump raw JSON), which the annotations do not carry.

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?

Purpose and routing are correctly front-loaded, which is good. But the text is padded with generic cross-tool boilerplate about assistantSummary, never displaying raw JSON, mentioning IDs only when useful, and concise human language, plus a duplicated title block and a stray double period; those sentences do not earn their place for this specific tool.

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 an extremely complex 40-parameter mutation with an output schema (so return values need no explanation), the description covers the essential behaviors: build path resolution, save-by-default vs preview, seat requirement, idempotency, billable usage, and failure semantics. The remaining shortfall is per-parameter meaning, which is a schema-coverage problem rather than a missing behavioral explanation.

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 only 3% across 40 parameters, so the description must carry the burden. It does explain the semantically critical ones (objective, requestedFormats, outputs with static JPEG/PNG requiring Studio persistence, persistence default vs preview_only, campaignId/campaignName, seatId/seatName, idempotencyKey), but dozens of parameters (brief, input, assets, prompt, template, marketContext, locale fields, skipTraffickedRebuild, etc.) get no clarification, leaving most of the surface 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 opening sentence gives a specific verb+resource+scope: 'Create AI Display CreativeDocuments from objective and requestedFormats without pre-existing creatives.' It also routes away for existing versions ('Export existing versions with export_creative'). However, with siblings like leanriq_build_ad, build_dooh, build_videoad and build_campaign_creative_set in the same family, it never explicitly says which build path this is versus those, so sibling differentiation is only partial.

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?

Gives concrete selection conditions: campaignId/campaignName triggers full persisted-campaign resolution and the Studio Gold build path, campaign-scoped calls save by default, and persistence preview_only is reserved for unsaved ad-hoc previews. It also names export_creative as the alternative for existing versions. What is missing is guidance on when to choose this over the near-identically-named leanriq_build_ad or the other build_* tools.

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

build_campaign_creative_setPlan and create an initial Studio creative set for a campaign that has no saved creatives. Do not use this tool to rebuild existing creatives; use build_ad with campaignId or campaignName, which resolves and rebuilds the full saved Studio inventory.A
Idempotent
Inspect

Plan and create an initial Studio creative set for a campaign that has no saved creatives. Do not use this tool to rebuild existing creatives; use build_ad with campaignId or campaignName, which resolves and rebuilds the full saved Studio inventory.. Classification: creates billable AI usage. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work.

NameRequiredDescriptionDefault
KPIYes
brandNo
notesNo
budgetNo
seatIdNo
billingNo
channelNodisplay
endDateNo
outputsNo
sandboxNo
audienceYes
operatorNo
seatNameNo
accountIdNo
objectiveYes
startDateNo
campaignIdNo
doohContextNo
funnelStageYes
targetSizesNo
advertiserIdNo
campaignNameYes
generateTagsNo
saveToStudioNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
desiredVariantCountNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
strictBrandComplianceNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo
createAdvertiserIfMissingNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare the mutation/idempotency safety profile, and the description adds substantially beyond them: billable AI usage, synchronous execution, mutation modes (validate_only, preview_only, execute), and a partial-failure policy (completed_items_not_rolled_back). It also explains the deterministic idempotency-key derivation, giving concrete retry semantics rather than just repeating idempotentHint.

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?

Purpose and routing are correctly front-loaded, but the body is a dense metadata dump followed by response-formatting instructions ("Never display raw JSON...") that read like a system prompt rather than tool-selection guidance. Some of that content earns its place, but the overall block is longer than the invocation task requires.

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?

Behavioral context is strong and an output schema exists (so return values need no explanation), but for a 40-parameter create tool with zero schema description coverage the description leaves required-input semantics and input formatting essentially undocumented. Adequate on behavior, incomplete on inputs.

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 0% across 40 parameters, so the description is the only source of parameter meaning — but it explains only idempotencyKey. Nothing is said about the five required fields (campaignName, objective, audience, KPI, funnelStage) or the many nested/optional structures, so the gap is largely unmitigated.

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

Purpose5/5

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

States a specific verb+resource ("Plan and create an initial Studio creative set") plus a clear scope condition ("for a campaign that has no saved creatives"), and explicitly names the sibling to use instead (build_ad) for the rebuild case. An agent can separate this from build_ad/build_dooh without opening a schema.

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

Usage Guidelines5/5

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

Gives both the when-to-use condition (a campaign with no saved creatives) and an explicit when-not-to-use with the named alternative ("Do not use this tool to rebuild existing creatives; use build_ad with campaignId or campaignName"). Routing is unambiguous.

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

build_doohBuild a DOOH-native poster for an existing Studio creative, compare exact native renders and save the complete editable working version by default. Below-threshold creative review retains a technically valid version without release approval. Explicit saveToStudio=false is an unsaved preview. DOOH never contains CTA buttons. It does not route through Display build_ad.A
Idempotent
Inspect

Build a DOOH-native poster for an existing Studio creative, compare exact native renders and save the complete editable working version by default. Below-threshold creative review retains a technically valid version without release approval. Explicit saveToStudio=false is an unsaved preview. DOOH never contains CTA buttons. It does not route through Display build_ad.. Classification: writes to Studio, creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
copyNo
assetsNo
formatNo
seatIdNo
campaignNo
creativeNo
seatNameNo
templateNo
accountIdNo
templatesNo
advertiserNo
campaignIdNo
copyPolicyNo
creativeIdNo
doohContextNo
advertiserIdNo
saveToStudioNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
strategyBriefNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
deliveryProfileNo
approvedCopyVariantsNo
defaultContentLocaleNo
designEvidenceContextNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
expectedActiveVersionIdNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the annotations, it discloses billable AI usage, durable execution, mutation modes (validate_only/preview_only/execute), and a partial-failure policy that completed items are not rolled back. It also clarifies idempotency-key derivation and the requirement that seatId/seatName be supplied on this exact call for writes when multiple seats are authorised. This is rich behavioral context that annotations alone (readOnly/destructive/idempotent hints) do not convey.

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

Conciseness3/5

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

The opening sentences are well front-loaded and dense with useful constraints, but the block is padded with generic orchestration guidance (assistantSummary usage, 'never display raw JSON', 'prefer concise human language') that is not specific to selecting or invoking this tool. Several sentences do not earn their place in a tool definition.

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?

An output schema exists so return values need not be described, and the safety/idempotency profile is covered. However, for a 35-parameter, zero-required, deeply nested mutation with 0% schema coverage, the description only addresses a handful of parameters; an agent still lacks guidance on the core payload (copy, assets, format, doohContext). Adequate but with clear gaps.

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

Parameters3/5

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

Schema description coverage is 0% across 35 nested parameters, so the description must carry the load. It meaningfully explains saveToStudio (false = unsaved preview), seatId/seatName (required on the write when multiple seats exist), and idempotencyKey fallback behavior, but the large majority of parameters (copy, assets, format, doohContext, locales, designEvidenceContext, etc.) are left undocumented. It compensates for a few high-impact parameters but not the breadth of 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 states a specific verb and resource (build a DOOH-native poster from an existing Studio creative) plus its two key behaviors: comparing native renders and saving the editable working version by default. It explicitly differentiates itself from the sibling build_ad ('does not route through Display build_ad') and rules out CTA buttons, so an agent can place it against build_ad/build_videoad without opening the schema.

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

Usage Guidelines4/5

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

It gives clear operating conditions: default saves, explicit saveToStudio=false yields an unsaved preview, and below-threshold review retains a technically valid non-released version. It also names the medium it is not (Display build_ad). It stops short of stating when to choose DOOH over the other build_* siblings for a given campaign.

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

build_videoadCreate an advertiser-aware pre-roll or CTV video composition with varied executable scene layouts and channel constraints. It never claims an MP4 master or traffic-ready asset before Studio has rendered and certified one.B
Idempotent
Inspect

Create an advertiser-aware pre-roll or CTV video composition with varied executable scene layouts and channel constraints. It never claims an MP4 master or traffic-ready asset before Studio has rendered and certified one.. Classification: creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
ctaNo
offerNo
seatIdNo
channelYes
productNo
campaignNo
headlineNo
seatNameNo
accountIdNo
objectiveYes
requestIdNo
skippableNo
subtitlesNo
advertiserNo
campaignIdNo
copyPolicyNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
editorContextNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
sourceAssetIdsNo
sourceShotMapsNo
supportingCopyNo
composeInStudioNo
contractVersionNobuild-videoad-v1
durationSecondsNo
shotPlanRequiredNo
studioCreativeIdNo
lockedSourceChoicesNo
approvedCopyVariantsNo
defaultContentLocaleNo
sourceFrameImageUrlsNo
designEvidenceContextNo
marketLanguageProfileNo
resolvedContentLocaleNo
voiceoverInstructionsNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo
expectedCreativeVersionIdNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.3/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=true, openWorldHint=false), the description discloses several traits the annotations do not: it creates billable AI usage, execution is durable, mutation modes, the partial-failure policy (completed_items_not_rolled_back), deterministic idempotency-key derivation, and the seat-provision requirement on mutations. These are meaningful additions, though the 'never claims an MP4 master before Studio certifies' statement is somewhat promotional.

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

Conciseness3/5

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

The purpose is front-loaded, but the opening sentence is copied verbatim from the title (including a duplicated period) and several trailing sentences are generic orchestration boilerplate about assistantSummary and not displaying raw JSON that are not specific to this tool. The mutation/seat notes do earn their place; the response-format boilerplate does not.

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 high-complexity mutation tool with an output schema present, the description covers lifecycle and safety behaviors (modes, partial failure, idempotency, seat requirement) reasonably well. It does not help an agent choose this tool over its video-adjacent siblings, and it leaves 43 of 45 parameters unexplained, which is a notable gap given the schema's richness.

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 45 parameters at 0% schema description coverage, the description must carry the burden, and it explains only a few: seatId/seatName, idempotencyKey, and the channel distinction (pre-roll vs CTV). The vast majority of parameters (sourceShotMaps, lockedSourceChoices, designEvidenceContext, copyPolicy, etc.) get no semantic explanation anywhere.

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 name and opening sentence give a specific verb+resource ('Create an advertiser-aware pre-roll or CTV video composition'), which cleanly separates it from build_dooh and the generic build_ad sibling. It lacks an explicit 'unlike build_ad, this one is video-only' statement, so sibling differentiation is inferred rather than stated.

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

Usage Guidelines3/5

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

There is no explicit when-to-use / when-not-to-use guidance relative to build_ad, leanriq_build_ad, or build_campaign_creative_set. It does state mutation modes (validate_only, preview_only, execute) and a prerequisite that seatId/seatName must be supplied on write calls with multiple authorised seats, which is partial usage guidance.

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

build_world_research_profileBuild a versioned advertiser research graph from configured identity and approved context.C
Idempotent
Inspect

Build a versioned advertiser research graph from configured identity and approved context.. Classification: read-only. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
advertiserContextNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.5/5.0
Behavior1/5

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

The description explicitly states 'Classification: read-only' while the annotations declare readOnlyHint=false, and the same text describes mutation modes (validate_only, preview_only, execute) and write-oriented seat requirements. This directly contradicts the structured annotation and would mislead an agent about whether the call mutates state.

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

Conciseness2/5

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

The purpose is front-loaded, but roughly half the text is generic orchestration/UX boilerplate (use assistantSummary first, never display raw JSON, suggest the next best action) that belongs in a system prompt rather than a tool definition, and it duplicates the title verbatim with a double period. The tool-specific signal is buried in padding.

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?

An output schema exists so return values need not be explained, and the description does cover mutation modes, partial-failure policy, and idempotency. But for a 16-parameter tool with 0% schema coverage and deeply nested approved-context objects, it omits any explanation of prerequisites, identity configuration requirements, or input structure, and its 'read-only' claim conflicts with the actual write behavior.

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 0% across 16 parameters, including large nested objects (advertiserContext with dozens of fields, marketContext, campaignContext), so the description carries the full burden — yet it only adds meaning for seatId/seatName and a node named idempotencyKey that is not even in the schema. The remaining parameters, including the entire advertiserContext payload, are left 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 states a specific verb and resource — building a versioned advertiser research graph from configured identity and approved context — which is far more than a name restatement. It does not, however, differentiate itself from the many sibling research tools (get_world_research_profile, leanriq_build_world_research_profile, get_world_research_summary), so an agent gets the 'what' but not a decisive 'this one vs that one'.

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

Usage Guidelines3/5

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

It provides real prerequisites for invoking the tool — the seatId/seatName requirement on the exact mutation call when more than one seat is authorized, and idempotencyKey derivation on omission — plus the available mutation modes. But it never says when to choose this tool over the adjacent get_world_research_* or build siblings, so the routing guidance is implied rather than stated.

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

cancel_taskcancel taskD
Idempotent
Inspect

cancel task. Classification: read-only. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
reasonNo
seatIdNo
taskIdYes
seatNameNo
accountIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

D1.8/5.0
Behavior1/5

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

The description asserts "Classification: read-only" while the annotations declare readOnlyHint=false, a direct contradiction that could lead an agent to treat a mutating cancel as a safe read. Although useful details follow (completed_items_not_rolled_back partial-failure policy, deterministic idempotencyKey derivation), they sit alongside mutation-mode boilerplate that further muddies whether this call changes state.

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

Conciseness2/5

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

Only the first two words address the tool itself; the rest is a generic response-formatting policy (assistantSummary, never display raw JSON, mention IDs sparingly) plus an execution/metadata preamble that would be identical across the suite. It is front-loaded on paper but wastes most of its length on harness boilerplate rather than selection-relevant content.

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?

An output schema exists, so return values need no explanation, but the description still omits everything an agent needs about the operation itself: what a cancelled task becomes, whether cancellation is reversible, what task states permit it, and how it differs from its sibling retry_task. For a mutation with 18 parameters at 0% schema coverage, this is a significant shortfall.

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 0% across 18 parameters, so the description must carry the load. It adds real semantics for only three: idempotencyKey derivation on omission, and the seatId/seatName requirement on mutations when multiple seats are authorised. The other 15 parameters — reason, accountId, locales, marketContext, languageVariantGroupId, and so on — are neither explained nor mapped to the cancel operation.

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

Purpose2/5

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

The description opens with "cancel task." — a verbatim restatement of the tool name and title — and never explains what cancelling actually does (abort a running job vs. mark it cancelled vs. discard queued work). The remaining text is harness metadata (classification, execution, mutation modes) rather than a statement of purpose, and it does not distinguish this from siblings such as retry_task, delete_flight, or archive_campaign.

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

Usage Guidelines2/5

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

There is no guidance on when to cancel a task versus retrying it (retry_task), listing it (get_task/list_tasks), or leaving it alone; no prerequisites such as required task state are stated. The only conditional instruction is parameter-level ("when more than one seat is authorised, seatId or seatName must be supplied"), which is not tool-selection guidance.

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

clone_creativeclone creativeC
Idempotent
Inspect

clone creative. Classification: writes to Studio. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
dryRunNo
seatIdNo
seatNameNo
accountIdYes
approvalIdNo
creativeIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.6/5.0
Behavior4/5

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

Annotations already declare write/idempotent/non-destructive, but the description adds substantive behavioral context beyond them: synchronous execution, task support forbidden, the three mutation modes, and the partial-failure policy 'completed_items_not_rolled_back'. The idempotency-key derivation rule and the requirement that seatId/seatName be passed on the exact write call are genuinely useful operational disclosures.

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?

It is front-loaded with the tool name and structured as labeled fields, which helps scanning. However, the bulk of the text is generic response-formatting boilerplate (assistantSummary, never display raw JSON, suggest next LeanrIQ action) that is not specific to cloning and displaces tool-relevant content.

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?

An output schema exists, so return-value explanation is not required, and the operational concerns (idempotency, seat, partial failure) are well covered. But for a 20-parameter, nested-object mutation the description never conveys the business semantics of the localization/market inputs, leaving the agent under-informed about how to construct the call.

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 0% across 20 parameters, so the description carries the full burden and largely fails: it explains only idempotencyKey and the seatId/seatName write requirement. Business parameters such as targetMarket, contentLocale, expectedVersion, marketContext, and languageVariantGroupId are undocumented in both schema and description.

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

Purpose2/5

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

The first sentence, "clone creative," is a verbatim restatement of the name and title and is the only statement of purpose. The only added substance is metadata ('writes to Studio', 'synchronous'), which classifies the operation but never explains what cloning produces (a copy? a variant?). No sibling is named for differentiation (e.g., create_creative_version, revise_creative), so it lands at tautology.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives like create_creative_version or revise_creative, and no prerequisites or exclusions. The mutation-modes line (validate_only/preview_only/execute) hints at run modes but is not framed as usage guidance. No guidance is present.

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

create_advertisercreate advertiserB
Idempotent
Inspect

create advertiser. Classification: writes to Studio. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
dryRunNo
seatIdNo
seatNameNo
accountIdYes
advertiserYes
approvalIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3/5.0
Behavior4/5

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

Strong behavioral disclosure: synchronous execution, mutation modes (validate_only, preview_only, execute), partial-failure policy 'completed_items_not_rolled_back', idempotency-key derivation, and the seatId/seatName requirement on multi-seat writes. These go well beyond the annotations, which only declare readOnly=false, idempotent=true, destructive=false. The main gap is that it doesn't say which permissions or account scoping are required, and 'Studio' is undefined.

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?

Behavioral facts are front-loaded (classification, execution, mutation modes, failure policy), which is good. But the response-formatting guidance about assistantSummary, raw JSON, IDs, and next-best-action is UI/prompt boilerplate rather than tool definition, and it dilutes the operative content across several sentences.

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?

Output schema exists, so return values need not be described, and the annotation safety profile is supplemented. However, a 20-parameter create tool with 0% schema coverage still lacks documentation for the advertiser object, accountId, expectedVersion, and the relationship between dryRun and the mutation modes. The description is operationally helpful but not complete enough to call blind.

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% and there are 20 parameters, so the description should compensate more. It does explain idempotencyKey (auto-derivation) and the seatId/seatName requirement, which are the two most consequential params. But the advertiser object fields (name, domain, websiteUrl, status, metadata), accountId, expectedVersion, market/locale params, and dryRun vs the three mutation modes are left entirely to the bare schema.

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

Purpose3/5

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

The description opens with 'create advertiser', which restates the name/title without adding a specific verb+resource framing beyond the schema's 'advertiser' object with name, domain, status. It doesn't distinguish from sibling resolvers like leanriq_resolve_or_provision_advertiser or create_campaign. The classification 'writes to Studio' adds some scope but not purpose specificity.

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

Usage Guidelines2/5

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

There is no guidance on when to use this vs alternatives such as leanriq_resolve_or_provision_advertiser (which provisions) or get_advertiser. The only usage-like statement is a seat-supply rule for multi-seat writes, which is a prerequisite, not a when-to-use decision. An agent has no routing signal among the 100+ siblings.

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

create_campaignCreate a Studio campaign. Put all campaign fields inside campaign. Map natural-language requests such as "called" to campaignName, awareness/consideration/conversion to funnelStage, impression goals to targetImpressions, and KPI labels to primaryKpi or secondaryKpi.A
Idempotent
Inspect

Create a Studio campaign. Put all campaign fields inside campaign. Map natural-language requests such as "called" to campaignName, awareness/consideration/conversion to funnelStage, impression goals to targetImpressions, and KPI labels to primaryKpi or secondaryKpi.. Classification: writes to Studio. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
dryRunNo
seatIdNo
campaignYes
seatNameNo
accountIdNo
approvalIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.7/5.0
Behavior5/5

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

Goes well past the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false). It discloses the partial-failure policy (completed_items_not_rolled_back), the three mutation modes, deterministic retry-key derivation, and the multi-seat authorisation precondition  exactly the kind of write-time behavior an agent cannot get from structured fields.

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?

Front-loaded and the field-mapping sentence is the most valuable part, but the block is long and repeats the title verbatim at the start. A large share of the text is response-formatting policy (assistantSummary, never display raw JSON) that is orchestration guidance rather than tool-invocation guidance, diluting the signal.

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?

An output schema exists, so return values are adequately covered elsewhere, and the annotations plus description cover the safety/idempotency profile well. The gap is on the input side: for a 20-parameter, deeply nested write with 0% schema description coverage, the description accounts for roughly a third of the parameters and says nothing about optional locale/market-context plumbing or versioning.

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% across 20 parameters, so the description must carry the load. It does map natural-language phrasing to concrete fields (calledcampaignName, funnel/awareness termsfunnelStage, impression goalstargetImpressions, KPI labelsprimaryKpi/secondaryKpi) and explains idempotencyKey and seatId/seatName, but leaves many top-level parameters such as accountId, approvalId, expectedVersion, marketContext, and the locale fields entirely 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?

States a specific verb and resource (Create a Studio campaign) and adds that all campaign fields must be nested inside the `campaign` object, which is a real structural instruction. It does not differentiate from close siblings such as `launch_creative_campaign`, `leanr_build_campaign_creative_set`, or `leanriq_campaign_builder`, so an agent must still infer which creation path applies.

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 genuine operational context: mutation modes (validate_only, preview_only, execute), the requirement that seatId/seatName be passed on the exact write call when multiple seats are authorised, and the fact that idempotencyKey is auto-derived on omission. However, it never says when to prefer this tool over the campaign-building siblings, which is the main routing decision an agent faces here.

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

create_creative_briefGenerate Studio-ready design briefs for one or more creatives, using campaign context, brand rules, audience, offer, and format constraints. When creative IDs and saveToStudio are supplied, LeanrIQ saves only when the caller has Studio write permission; otherwise it returns a non-destructive proposal.A
Idempotent
Inspect

Generate Studio-ready design briefs for one or more creatives, using campaign context, brand rules, audience, offer, and format constraints. When creative IDs and saveToStudio are supplied, LeanrIQ saves only when the caller has Studio write permission; otherwise it returns a non-destructive proposal.. Classification: writes to Studio, creates billable AI usage. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
briefNo
forceNo
inputNo
assetsNo
promptNo
seatIdNo
taskIdNo
assetIdNo
outputsNoOptional editable/static JPEG/PNG delivery requirements. Studio persistence is required for static output.
audienceNo
campaignNo
creativeNo
flightIdNo
seatNameNo
templateNo
accountIdNo
objectiveNo
advertiserNo
campaignIdNo
creativeIdNo
templateIdNo
creativeIdsNo
persistenceNo
advertiserIdNo
instructionsNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
requestedFormatsNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
skipTraffickedRebuildNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.5/5.0
Behavior5/5

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

Beyond the annotations it discloses classification (writes to Studio, creates billable AI usage), synchronous execution, forbidden task support, mutation modes, a partial-failure policy, idempotency-key derivation, and the seat authorization requirement. This is rich disclosure the annotations alone do not provide, and it is consistent with readOnlyHint=false and destructiveHint=false.

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?

Purpose is front-loaded, but the text duplicates the title nearly verbatim in sentence one (with a dangling '..'), and much of the body is generic orchestration/response-formatting boilerplate that is tangential to tool selection. Signal is present but padded.

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?

An output schema exists so return values need not be explained, and the mutation/safety behavior is well covered. However, given 40 parameters at 3% schema coverage, the description is not complete enough to tell an agent how to populate the many input fields.

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

Parameters2/5

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

Schema coverage is only 3% across 40 parameters, so the description must carry the load. It adds genuine meaning for a few (idempotencyKey derivation, seatId/seatName authorization, saveToStudio behavior) but leaves the overwhelming majority of parameters undocumented in both the schema and the text.

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 opening sentence gives a specific verb+resource ('Generate Studio-ready design briefs') plus the driving inputs (campaign context, brand rules, audience, offer, format constraints). This clearly distinguishes it from read/build siblings like build_ad or create_production_plan, though it never names an alternative tool to route against.

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

Usage Guidelines3/5

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

It describes the save-vs-proposal branch when creative IDs and saveToStudio are supplied, which is a usable condition. But it offers no explicit when-to-use/not-use guidance relative to close siblings (leanriq_create_brief, create_production_plan, create_creative_intelligence_plan), leaving selection to inference.

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

create_creative_intelligence_planCreate a concise proposed campaign plan from one grounded opportunity. Studio approval is required before campaign creation.B
Idempotent
Inspect

Create a concise proposed campaign plan from one grounded opportunity. Studio approval is required before campaign creation.. Classification: read-only. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
advertiserIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdYes
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.4/5.0
Behavior4/5

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

The description adds substantial behavioral context beyond annotations: mutation modes (validate_only, preview_only, execute), partial failure policy (completed_items_not_rolled_back), idempotency key derivation, and the seatId/seatName requirement for writes when multiple seats are authorised. This is rich disclosure, though the awkward 'Classification: read-only' text conflicts with the write-oriented mutation modes listed.

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

Conciseness2/5

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

The description is bloated with boilerplate orchestration instructions (assistantSummary guidance, 'never display raw JSON', tone directives) that crowd out the actual tool-specific information. The most important facts – what the tool does and its mutation modes – are buried after a long metadata preamble.

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?

It covers the mutation lifecycle and idempotency/seat requirements, and an output schema exists so return values need not be explained. But with 16 parameters at 0% schema coverage, the description leaves most input semantics undocumented, falling short for a tool of this complexity.

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

Parameters3/5

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

Schema description coverage is 0% with 16 parameters, so the description must compensate. It covers the seatId/seatName requirement and idempotencyKey behavior, which is valuable. But it doesn't explain advertiserId, opportunityId, targetMarket(s), locale fields, or the language variant parameters at all, leaving most of the 16 params 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 states a specific verb and resource: 'Create a concise proposed campaign plan from one grounded opportunity.' The title adds the key caveat that studio approval is required before campaign creation, which distinguishes this from launch_creative_campaign or create_campaign. It is clear, though it doesn't explicitly name those siblings.

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

Usage Guidelines3/5

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

The description implies usage ('from one grounded opportunity') and the title notes studio approval is required before actual campaign creation, hinting at the validate/preview/execute mutation modes. However, it never explicitly states when to choose this over run_creative_intelligence, select_world_opportunity_for_campaign, or create_campaign. No explicit when-not or alternative guidance.

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

create_creative_versioncreate creative versionB
Idempotent
Inspect

create creative version. Classification: writes to Studio. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
dryRunNo
seatIdNo
creativeNo
seatNameNo
accountIdYes
versionIdNo
approvalIdNo
creativeIdYes
sourceLocaleNo
targetMarketNo
changeSummaryNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.3/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description adds substantial behavioral context: synchronous execution, task support forbidden, the completed_items_not_rolled_back partial-failure policy for multi-item writes, and the deterministic retry-key derivation when idempotencyKey is omitted. The seat-binding rule (a remembered seat is insufficient for a write) is exactly the kind of precondition an agent must know before calling.

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

Conciseness3/5

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

The opening is front-loaded with the useful mutation facts, but a large block is generic response-formatting boilerplate ("Use assistantSummary first... Never display raw JSON... suggest the next best LeanrIQ action") that applies to every tool and dilutes this one. The redundant "create creative version." lead-in also costs a sentence.

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?

With an output schema present, return values need no explanation, and the description covers the mutation contract, idempotency, and seat requirement well. However, for a 23-parameter nested write with 0% schema description coverage, the near-total silence on parameter meaning leaves the definition incomplete for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0% across 23 parameters, so the description carries the full burden — and it only explains idempotencyKey and seatId/seatName semantics. Nothing is said about creative, approvalId, expectedVersion, dryRun, or the many locale/market parameters, leaving most inputs undocumented.

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

Purpose3/5

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

"create creative version" essentially restates the tool name and title, though "Classification: writes to Studio" adds that it is a write in the Studio domain. It does not distinguish this from near siblings such as clone_creative, revise_creative, or restore_creative_version, so an agent gets no help disambiguating the version-creation family.

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

Usage Guidelines3/5

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

It discloses the valid mutation modes (validate_only, preview_only, execute) and a real precondition: when multiple seats are authorised, seatId/seatName must be supplied on the exact call. That is useful operational guidance, but there is no statement of when to reach for this tool over clone_creative / revise_creative, and no explicit exclusions.

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

create_flightcreate flightC
Idempotent
Inspect

create flight. Classification: writes to Studio. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
nameNo
dryRunNo
seatIdNo
flightIdNo
platformNo
seatNameNo
accountIdNo
approvalIdNo
campaignIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
thirdPartyTagsNo
creativeConfigsNo
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.8/5.0
Behavior4/5

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

Beyond the annotations, the description discloses the partial failure policy (completed_items_not_rolled_back), durable execution, mutation modes, and the deterministic idempotency-key derivation. These are genuine behavioral traits the annotations do not carry, though permission/authorization specifics remain thin.

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

Conciseness3/5

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

The description is a dense metadata block that front-loads a tautology before reaching substantive content. The response-formatting and orchestration instructions are verbose, though they are structured and arguably useful; several sentences could be trimmed without loss.

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?

An output schema exists, so return values need not be explained, and the description reasonably covers idempotency, seat authorization, and mutation modes. But for a 26-parameter tool with zero schema coverage, the absence of any parameter-level explanation makes it incomplete for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0% across 26 parameters, so the description bears full responsibility. It adds meaning for only seatId/seatName and idempotencyKey, leaving name, platform, flightId, marketContext, creativeConfigs, and the rest entirely undocumented. This is far short of compensating for the coverage gap.

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

Purpose2/5

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

The opening line "create flight" is a tautology that merely restates the tool name, and the term "flight" is never defined. "Classification: writes to Studio" adds a small amount of resource context but does not specify scope, required inputs, or how this differs from siblings like create_campaign or validate_flight. An agent cannot tell from this text what a flight actually is.

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 mutation modes (validate_only, preview_only, execute) and the seat prerequisite ("seatId or seatName must be supplied on that exact tool call when more than one seat is authorised") give implied invocation guidance. However, there is no explicit when-to-use guidance versus alternatives such as validate_flight or update_flight, leaving the choice to inference.

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

create_production_plancreate production planC
Idempotent
Inspect

create production plan. Classification: creates billable AI usage. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work.

NameRequiredDescriptionDefault
modeNostudio_instructions
brandYes
briefYes
assetsNo
formatYes
seatIdNo
creativeNo
seatNameNo
templateNo
campaignIdNo
creativeIdNo
constraintsNo
advertiserIdNo
campaignNameYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
templateAnalysisNo
studioCapabilitiesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
requestedOperationTypesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.6/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that this is billable AI usage, that execution is synchronous, that task support is forbidden, the mutation modes (validate_only, preview_only, execute), the partial failure policy (completed_items_not_rolled_back), and the deterministic idempotency-key derivation on retry. These are exactly the operational traits an agent needs and they are not derivable from 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.

Conciseness3/5

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

The sentence is front-loaded with the tool name, but a large share of the text is generic output-style boilerplate ('Never display raw JSON,' 'Mention IDs only when useful,' 'Prefer concise human language') that applies to every tool rather than this one. It is structured but padded with non-specific guidance.

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 highly complex tool (29 parameters, nested objects, required brand/campaignName/format/brief), the description explains operational behavior but leaves the entire parameter surface undocumented, which is insufficient for correct invocation. The output schema does relieve it of explaining return values, but the parameter gap dominates.

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

Parameters1/5

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

Schema description coverage is 0% across 29 parameters (brand, brief, format, template, marketContext, etc.), so the description must carry parameter meaning, and it does not. The only parameter-like reference is 'idempotencyKey,' which is not even present in the input schema. No field-level semantics are added anywhere.

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

Purpose2/5

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

The description opens with 'create production plan,' which simply restates the tool name and title verbatim. It never explains what a production plan is, what it produces, or how it differs from siblings like create_creative_brief or create_creative_intelligence_plan. This is tautological restatement rather than a purpose statement.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no alternatives named. The description notes execution mechanics (synchronous, task support forbidden) and mutation modes, but never tells the agent when this tool is the right choice versus the many sibling 'create_*' / 'build_*' tools.

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

delete_flightdelete flightC
DestructiveIdempotent
Inspect

delete flight. Classification: writes to Studio, destructive. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
dryRunNo
seatIdNo
flightIdYes
seatNameNo
accountIdYes
approvalIdNo
campaignIdNo
creativeIdNo
resourceIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds real value: durable execution, the partial failure policy 'completed_items_not_rolled_back', the deterministic retry-key derivation when idempotencyKey is omitted, and the multi-seat authorisation requirement. It still does not say what else is destroyed along with the flight.

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

Conciseness2/5

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

The definition is dominated by generic response-formatting boilerplate ('Never display raw JSON', 'Use assistantSummary first') that applies to every tool and does not help select or invoke this one. The tool-specific content is buried among orchestration instructions rather than front-loaded.

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?

An output schema exists so return values need not be described, but for a 24-parameter destructive mutation at 0% schema coverage the description is incomplete about most inputs. It covers seat authorisation and idempotency but leaves the rest of the parameter surface undocumented.

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 0% across 24 parameters, so the description must carry the burden, yet it only touches seatId/seatName and idempotencyKey. The required accountId and flightId, plus 19 other fields (dryRun, expectedVersion, campaignId, etc.), get no explanation anywhere. It only marginally compensates for the coverage gap.

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

Purpose3/5

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

The first sentence, 'delete flight', is essentially the tool name restated, so the core purpose is only tautologically stated. It adds the classification 'writes to Studio, destructive', which signals scope, but it never explains what a flight is or what deleting one entails (dependent creatives/ads). No sibling differentiation from update_flight, validate_flight, or retraffick_flight.

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

Usage Guidelines3/5

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

It lists mutation modes (validate_only, preview_only, execute) and a concrete rule that seatId/seatName must be supplied on the exact write call when multiple seats are authorised, which is genuine usage guidance. However it never states when to use this tool versus sibling flight tools, nor any preconditions for deletion.

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

export_creativeExport an existing Studio CreativeDocument version to production JPEG or PNG; returns exact dimensions, URL, bytes and checksum. Omit versionId to resolve the current persisted active version. Does not generate or replace editable creative state.B
Idempotent
Inspect

Export an existing Studio CreativeDocument version to production JPEG or PNG; returns exact dimensions, URL, bytes and checksum. Omit versionId to resolve the current persisted active version. Does not generate or replace editable creative state.. Classification: writes to Studio. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
formatNojpeg
seatIdNo
qualityNo
flightIdNo
maxBytesNo
seatNameNo
accountIdNo
versionIdNo
creativeIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.3/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=true, openWorldHint=false), the description adds real operational context: synchronous execution, task support forbidden, partial-failure policy 'completed_items_not_rolled_back,' deterministic idempotency-key derivation on replay, and the rule that seatId/seatName must be supplied on the exact write call. These are meaningful traits the annotations do not convey, though the 'writes to Studio' classification and generic orchestration guidance are boilerplate.

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

Conciseness3/5

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

The purpose is front-loaded, but the description duplicates the title verbatim (including a doubled period) and then appends a large block of generic orchestration boilerplate about assistantSummary and never displaying raw JSON that is not specific to exporting. Every sentence does not earn its place for this tool.

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?

An output schema exists, so return values need not be described, and the description does cover the versionId default and seat authorization. However, for a 21-parameter, nested-object tool with 0% schema description coverage, the description leaves most inputs unexplained, so it is only partially complete given the tool's complexity.

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 0% across 21 parameters, so the description carries the full burden and largely fails it. It clarifies versionId omission semantics and the seatId/seatName requirement, but leaves the export-defining parameters (format, quality, maxBytes, flightId, accountId, locale/market fields) entirely undocumented, and it references 'Mutation modes' for which no schema parameter exists.

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 opening sentence names a specific verb and resource (export an existing Studio CreativeDocument version) and the artifact produced (production JPEG or PNG), and it explicitly rules out adjacent behaviors with 'Does not generate or replace editable creative state,' which separates it from siblings like create_creative_version, generate_preview_links, and traffick_creative. It is clear, though it largely restates the title verbatim rather than adding new framing.

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 via 'Omit versionId to resolve the current persisted active version' and the negative boundary 'Does not generate or replace editable creative state,' but it never names a concrete alternative tool or the condition that would select one (e.g., export_trafficked_assets vs. generate_preview_links). Guidance is inferable rather than explicit.

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

export_trafficked_assetsexport trafficked assetsC
Read-onlyIdempotent
Inspect

export trafficked assets. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
typeNo
seatIdNo
flightIdYes
seatNameNo
accountIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.2/5.0
Behavior3/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world. The description adds genuinely useful behavioral facts beyond them: synchronous execution, task support forbidden, and that the payload is internal state with an assistantSummary field. It stops short of permissions, scope, or what 'trafficked assets' actually covers.

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

Conciseness2/5

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

The tool-specific content is one redundant sentence; the rest is generic orchestration boilerplate ('Use assistantSummary first', 'Never display raw JSON', 'Prefer concise, human language') that would apply to nearly every tool. The opening sentence wastes the front-loaded position on a tautology.

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?

An output schema exists, so return values need not be explained, but for a 17-parameter export tool with a single required field and no schema descriptions, the definition omits the parameter meaning and selection context an agent needs to invoke it correctly.

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

Parameters2/5

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

Schema description coverage is 0% across 17 parameters, so the description carries the full burden of explaining flightId, the json/csv type enum, seat/market/locale fields, and the nested marketContext object. It mentions none of them, leaving every parameter undocumented.

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

Purpose2/5

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

The description opens by restating the title verbatim ('export trafficked assets') and never explains what a trafficked asset is, what the export contains, or how it differs from close siblings like get_trafficked_assets, export_creative, or preview_trafficking_output. It is essentially a tautology of the name.

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

Usage Guidelines2/5

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

There is no statement of when to choose this tool over the many sibling tools (get_trafficked_assets, export_creative, preview_trafficking_output, traffick_flight). The bulk of the text is generic guidance on how to phrase the user-facing response, which is not selection guidance.

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

generate_adserver_taggenerate adserver tagC
Idempotent
Inspect

generate adserver tag. Classification: writes to Studio. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
forceNo
seatIdNo
flightIdYes
platformNo
seatNameNo
accountIdNo
approvalIdNo
creativeIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.2/5.0
Behavior3/5

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

Genuinely useful additions beyond the annotations: the partial-failure policy (completed_items_not_rolled_back), the deterministic retry key derived when idempotencyKey is omitted, and the rule that a remembered seat is not valid for a write. However, the listed mutation modes (validate_only, preview_only, execute) have no corresponding schema parameter, which can mislead an agent into passing a non-existent mode, and nothing is said about whether generation is reversible or side-effect scope.

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

Conciseness2/5

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

The first sentence duplicates the title verbatim, and roughly half the text is generic response-formatting boilerplate (assistantSummary, never display raw JSON, suggest the next actionable step) that applies to every tool rather than this one. The genuinely tool-specific facts (partial-failure policy, idempotency derivation, seat rule) are buried at the end of the paragraph.

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?

An output schema exists so return values need not be explained, but for a 21-parameter, nested-object, write-classified mutation the description omits what a tag actually contains, whether the flight must be trafficked first, and the meaning of nearly every input. The framing is dominated by chat-presentation instructions rather than what the agent needs to invoke the tool correctly.

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

Parameters2/5

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

Schema description coverage is 0% across 21 parameters, so the description carries the full burden and discharges only a fraction: idempotencyKey derivation and seatId/seatName requirements are explained, but the required flightId/creativeId, plus platform, accountId, approvalId, force, the locale/market family, and marketContext/marketLanguageProfile objects are entirely undefined. An agent cannot tell which optional fields are meaningful for tag generation.

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

Purpose2/5

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

The opening sentence "generate adserver tag" simply restates the tool name and title, adding only a classification tag ("writes to Studio") and execution mode. It never states what an ad server tag is, that it is produced for the required flightId/creativeId pair, or how it differs from the sibling get_adserver_tag. An agent learns the verb but not the object it acts on.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of alternatives, notably the sibling get_adserver_tag which retrieves an existing tag, nor any prerequisite such as a validated or trafficked flight. The only conditional guidance is operational (seat must be supplied when multiple seats are authorised), which does not help the agent choose this tool over its siblings.

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

get_adserver_tagget adserver tagC
Read-onlyIdempotent
Inspect

get adserver tag. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
forceNo
seatIdNo
flightIdYes
platformNo
seatNameNo
accountIdNo
approvalIdNo
creativeIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the phrases "Classification: read-only", "Execution: synchronous" and "Task support: forbidden" add nothing new. The description does contribute genuine behavioral context about the payload's intended audience and how it should be surfaced (assistantSummary first, never dump raw JSON), which is useful but concerns presentation rather than the tool's own behavior.

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

Conciseness2/5

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

Three of the opening clauses merely echo annotations, and the response-formatting paragraph is long relative to what the tool does. Much of the text is generic orchestration boilerplate that would apply to any read tool, rather than content that earns its place here.

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 21-parameter read tool with nested objects and an output schema, the definition says nothing about what the returned tag represents, which parameters scope the lookup, or error/permission conditions. Output-format guidance is present and the output schema exists, but the input-side picture is essentially blank.

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

Parameters1/5

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

Schema description coverage is 0% across 21 parameters, so the description must carry the burden and it carries none of it. Neither the required keys (flightId, creativeId) nor the relationship among seatId/platform/accountId/marketContext is explained, leaving the agent to guess which identifiers are needed and why.

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

Purpose2/5

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

"get adserver tag" is a near-restatement of the tool name and title, giving no more specificity than the name itself. It never states what an adserver tag is or how it differs from the sibling generate_adserver_tag, so an agent cannot distinguish a retrieval of an existing tag from generation of a new one.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no named alternative. The obvious sibling generate_adserver_tag is never referenced, so the agent gets no routing signal between fetching versus generating a tag.

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

get_advertiserget advertiserC
Read-onlyIdempotent
Inspect

get advertiser. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdNo
flightIdNo
seatNameNo
accountIdNo
previewIdNo
campaignIdNo
creativeIdNo
templateIdNo
advertiserIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.1/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds real context beyond that: synchronous execution, task support forbidden, and that the payload is internal orchestration state containing an assistantSummary field. It stops short of describing size, pagination, or failure behavior.

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

Conciseness2/5

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

The text is dominated by generic, template-like response-formatting boilerplate ("Prefer concise, human language...", "suggest the next best LeanrIQ action") that crowds out tool-specific information. It also opens by restating the tool name rather than front-loading anything useful.

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 23-parameter, deeply nested read tool, the definition omits everything an agent needs to invoke it correctly (parameter meaning, required advertiserId, scope). The output schema exists so return values needn't be explained, but the input side and selection context are essentially absent.

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?

There are 23 parameters at 0% schema description coverage, including a required advertiserId, yet the description says nothing about any of them—no meaning for seatId, flightId, locale fields, or the nested marketContext. With this many undocumented inputs the description must compensate and it does not.

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

Purpose2/5

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

The opening "get advertiser" merely restates the tool name/title and never says what data is returned or how it differs from siblings like list_advertisers, get_current_seat, or get_campaign. The remaining text is presentation guidance, not purpose specification. An agent learns nothing about scope from this line.

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

Usage Guidelines2/5

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

There is no guidance on when to call this tool versus the many alternatives (list_advertisers, create_advertiser, update_advertiser, leanriq_resolve_or_provision_advertiser). The instructions present are about how to phrase responses to the user, not about tool selection or preconditions.

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

get_assetget assetA
Read-onlyIdempotent
Inspect

get asset. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. Studio assets are scoped resources: pass advertiserId or creativeId when listing assets, and pass one of those scopes together with assetId when retrieving one asset. LeanrIQ returns INVALID_INPUT rather than a misleading empty result when that scope is absent.

NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdYes
flightIdNo
seatNameNo
accountIdNo
previewIdNo
campaignIdNo
creativeIdNo
templateIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.5/5.0
Behavior4/5

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

The annotations already declare readOnly, idempotent, non-destructive and closed-world, but the description adds material the annotations cannot: the INVALID_INPUT-not-empty-result error contract, the mandatory scope pairing, and orchestration rules about surfacing assistantSummary and withholding raw JSON. Those are real behavioral disclosures beyond the structured hints.

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

Conciseness3/5

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

The most actionable content (scope requirements and the accepted error behavior) is placed last, after a metadata preamble ('Classification: read-only. Execution: synchronous. Task support: forbidden') that partly repeats the annotations and adds little. The presentation guidance is reasonable but not front-loaded, and the ordering works against fast scanning.

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?

An output schema exists, so return shape need not be explained, and the critical invocation constraint (scope plus assetId) plus the error contract are covered. Still, for a 23-parameter tool with zero schema documentation, the description leaves most inputs undefined, which is thin for this level of complexity.

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

Parameters3/5

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

Schema description coverage is 0% across 23 parameters, so the description carries the burden, and it only clarifies the scope triad (assetId, advertiserId, creativeId). The remaining twenty parameters — seatId, flightId, campaignId, templateId, and every locale/market field — get no meaning from either the schema or the description, so it partially compensates at best.

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 opening 'get asset' is a tautology, but the closing sentences do specify the real work: retrieving a single Studio asset scoped by advertiserId or creativeId plus assetId. The listing-vs-retrieving distinction implicitly separates it from the sibling list_assets, though that sibling is never named. Purpose is recoverable, just buried.

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

Usage Guidelines3/5

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

It gives concrete preconditions (which scope identifiers must accompany assetId) and states the failure mode when scope is missing, which is genuinely useful routing info. However, it never says when to reach for get_asset versus list_assets or get_creative directly, so the when-to-use decision is only implied by the scope discussion.

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

get_brand_profileResearch and return a LeanrIQ brand profile. This read capability does not save to Studio.B
Read-onlyIdempotent
Inspect

Research and return a LeanrIQ brand profile. This read capability does not save to Studio.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
brandUrlYes
seatNameNo
brandNameYes
advertiserIdNo
forceRefreshNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
competitorLimitNo
requestedSectionsNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.2/5.0
Behavior4/5

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

Beyond the annotations (readOnly, idempotent, non-destructive, open-world), it discloses that nothing is persisted to Studio, that execution is synchronous, that task support is forbidden, and that the payload is internal application state. That is real added context, though 'Classification: read-only' largely restates readOnlyHint.

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?

Purpose is front-loaded and the presentation rules are useful, but the text carries boilerplate ('Classification: read-only. Execution: synchronous. Task support: forbidden.'), a doubled period, and an unbalanced ratio of response-formatting advice to tool behavior.

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

Completeness2/5

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

An output schema exists so return values need no explanation, and the assistantSummary guidance is a plus. But for a 20-parameter research tool with nested objects and zero schema descriptions, the omission of any parameter meaning leaves an agent under-equipped to invoke it correctly.

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

Parameters2/5

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

The tool has 20 parameters at 0% schema description coverage, yet the description explains none of them — not even the two required ones (brandName, brandUrl) or forceRefresh's cache-busting role. The schema's type/format/default constraints are all an agent has to go on.

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

Purpose4/5

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

States a specific verb and resource: 'Research and return a LeanrIQ brand profile.' The clause 'does not save to Studio' begins to separate it from the mutation sibling refresh_brand_profile. It stops short of naming or contrasting with leanriq_get_brand_profile, the near-identical sibling, so it is clear but not fully differentiated.

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

Usage Guidelines3/5

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

The description gives response-handling guidance (use assistantSummary first, never display raw JSON, mention IDs only when useful) but says nothing about when to choose this tool over refresh_brand_profile or leanriq_get_brand_profile. Tool-selection context is only implied.

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

get_brand_visualsCollect brand logos, imagery, colours, fonts, and visual previews for use in Studio creative builds. Use this before build_ad when a campaign needs visual grounding; this read capability does not save to Studio.B
Read-onlyIdempotent
Inspect

Collect brand logos, imagery, colours, fonts, and visual previews for use in Studio creative builds. Use this before build_ad when a campaign needs visual grounding; this read capability does not save to Studio.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
optionsNo
storageNo
seatNameNo
brandNameYes
websiteUrlYes
advertiserIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so the 'Classification: read-only' line is largely redundant, but the description adds genuinely new traits: synchronous execution, task support forbidden, and an explicit side-effect statement ('does not save to Studio'). The output-handling rules (assistantSummary first, don't dump raw JSON) usefully shape agent behavior 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.

Conciseness3/5

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

The purpose is correctly front-loaded, but the body is generic orchestration boilerplate that repeats across tools and a stray double period ('Studio..') signals unpolished text. The generic output-display rules take up roughly half the description for one repeated instruction.

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 output schema means return values need not be described, and the read-only/no-persist behavior is covered. But for a 19-parameter tool with deep nested option objects, storage config, and locale/market context, the near-total absence of parameter and configuration guidance leaves the agent under-equipped to invoke it correctly.

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

Parameters2/5

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

19 parameters with 0% schema description coverage and no parameter guidance anywhere in the description: required fields (advertiserId, brandName, websiteUrl) and the nested options/storage/marketContext objects are entirely unexplained. At most, listing 'logos, imagery, colours, fonts' loosely maps to the fetch/extract toggles, which is far too thin for a schema this large.

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 opening sentence gives a specific verb ('Collect') and concrete resources (logos, imagery, colours, fonts, previews) plus the target consumer ('Studio creative builds'). However, it never distinguishes itself from close siblings like get_brand_profile or refresh_brand_visuals, which an agent must choose between.

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

Usage Guidelines4/5

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

It gives explicit timing ('Use this before build_ad when a campaign needs visual grounding') and a key constraint ('this read capability does not save to Studio'), which implies refresh_brand_visuals is the persisting counterpart. It stops short of naming that alternative or stating when-not to use this tool, so it is clear context rather than full routing guidance.

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

get_campaignget campaignA
Read-onlyIdempotent
Inspect

get campaign. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. Campaign metadata only. Studio aiActivation/adBuild fields describe workflow or progress state, not saved creative inventory, and must never be used to infer whether creatives exist or how many are saved. If the user asks for creatives or creative inventory for a known campaignId, call list_creatives directly; do not preflight get_campaign.

NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdNo
flightIdNo
seatNameNo
accountIdNo
previewIdNo
campaignIdYes
creativeIdNo
templateIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds context the annotations cannot: the payload is internal orchestration state, output should be summarized via assistantSummary, and the aiActivation/adBuild fields are workflow state rather than saved creative inventory. That last caveat preempts a real misinterpretation, though auth or rate-limit behavior is unaddressed.

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

Conciseness3/5

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

The definition is front-loaded with classification metadata that merely echoes the annotations, and several sentences are response-formatting policy ('Never display raw JSON', 'Mention IDs only when useful') rather than invocation guidance. The genuinely useful caveat about aiActivation/adBuild is buried mid-paragraph instead of being prominent.

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?

An output schema exists, so return values need not be explained, and the behavioral and presentation rules are well covered. However, for a 23-parameter tool with zero schema documentation, the description leaves the entire input surface opaque, which is a meaningful completeness gap for correct invocation.

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

Parameters2/5

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

The schema has 23 parameters at 0% description coverage, and the description never names or explains a single one of them in any semantic detail. Only 'campaignId' appears incidentally in the routing sentence. An agent must guess which of the 22 optional context fields to supply and what they mean.

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?

Although the opening 'get campaign' restates the name, the description adds real scope ('Campaign metadata only') and explicitly carves out adjacent territory by saying creatives are not returned from this endpoint. That is enough for an agent to distinguish get_campaign from list_creatives at selection time, even though the verb itself is generic.

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

Usage Guidelines4/5

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

It gives an explicit when-not and the alternative: 'If the user asks for creatives... call list_creatives directly; do not preflight get_campaign.' That is a genuine routing rule. It stops short of telling the agent when get_campaign is the right choice versus list_campaigns or get_flight, so it is not a full 5.

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

get_capabilitiesget capabilitiesC
Read-onlyIdempotent
Inspect

get capabilities. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
includeHiddenNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description still adds real context beyond that: "Execution: synchronous", "Task support: forbidden", and the fact that the response is internal orchestration state with an assistantSummary field. That is meaningful behavioral disclosure, though it never says what happens when filtering params are passed or omitted.

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

Conciseness2/5

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

The single concrete sentence about the tool's nature is buried after boilerplate "Classification/Execution/Task support" fragments, and the majority of the text is response-formatting instruction rather than tool definition. It is not bloated in raw length, but the weight is misallocated and the substance is not front-loaded.

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?

An output schema exists, so return values need not be explained, and there are no required parameters. However, for a 15-parameter tool with a confusing near-name-twin sibling, the definition neither explains the parameters nor differentiates the tool from get_leanriq_capabilities — the two gaps an agent most needs closed.

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?

There are 15 parameters (seatId, locale fields, marketContext, targetMarkets, languageVariantGroupId, etc.) at 0% schema description coverage with nested objects, and the description mentions none of them. No meaning, format, or default is added for any parameter, leaving the agent unable to interpret what these inputs actually filter or configure.

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

Purpose2/5

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

"get capabilities" merely restates the tool name and title; it never names what capabilities are being retrieved (product features? seat entitlements? account limits?). The only concrete statement about the payload — "internal application state for LeanrIQ and ChatGPT orchestration" — describes the response, not the purpose, and it fails to distinguish this tool from the near-identical sibling get_leanriq_capabilities.

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

Usage Guidelines2/5

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

The description gives post-processing rules ("Use assistantSummary first", "Never display raw JSON", "suggest the next best LeanrIQ action") but no guidance on when to call this tool versus get_leanriq_capabilities, get_permissions, or get_current_seat. An agent gets output-handling advice but no invocation trigger.

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

get_competitor_intelligenceRead saved canonical LeanrIQ Competitor Intelligence V2 for an advertiser-scoped competitor. This does not reacquire evidence or generate new recommendations.B
Read-onlyIdempotent
Inspect

Read saved canonical LeanrIQ Competitor Intelligence V2 for an advertiser-scoped competitor. This does not reacquire evidence or generate new recommendations.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
websiteNo
seatNameNo
advertiserIdNo
competitorIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
competitorNameNo
contentLocalesNo
includeEvidenceNo
competitorDomainNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds real context beyond them: no evidence reacquisition or recommendation generation, synchronous execution, task support forbidden, and that the payload is internal application state meant for orchestration rather than display.

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

Conciseness3/5

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

The purpose is front-loaded and the output-presentation rules are useful, but the title sentence is repeated verbatim, there is a stray double period, and 'Classification: read-only. Execution: synchronous. Task support: forbidden.' largely restates annotation data rather than earning space.

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?

An output schema exists, so return values need no explanation, and the presentation guidance is a genuine addition. But with 20 undocumented, all-optional parameters and no routing against the many sibling get_/run_ competitor tools, the definition is incomplete for correct invocation.

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

Parameters2/5

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

Twenty parameters with 0% schema description coverage and no enums, so the description carries the full burden of explaining seatId, advertiserId, competitorId, targetMarket, locale fields, includeEvidence, etc. It mentions none of them, leaving an agent to guess which identifiers are required (required count is 0, so selection is entirely ambiguous).

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

Purpose4/5

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

States a specific verb (Read) and resource (saved canonical LeanrIQ Competitor Intelligence V2) with the advertiser-scoped qualifier. It also carves itself out from the run_* sibling by noting it 'does not reacquire evidence or generate new recommendations,' though it never names run_competitor_intelligence explicitly.

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 (read saved state rather than re-run) and gives rich guidance on how to present the result (lead with assistantSummary, never dump raw JSON, suggest a next LeanrIQ action). However it never states when to pick this over run_competitor_intelligence or leanriq_get_competitor_creative_intelligence, and offers no prerequisites or exclusions.

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

get_creativeget creativeC
Read-onlyIdempotent
Inspect

get creative. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdNo
flightIdNo
seatNameNo
accountIdNo
previewIdNo
campaignIdNo
creativeIdYes
templateIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.4/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, so the bar is lower. The description goes beyond them by disclosing synchronous execution, that task support is forbidden, and that the payload contains an assistantSummary field intended for user-facing synthesis, which materially shapes how an agent should treat the response.

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

Conciseness3/5

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

The output-handling rules are front-loaded and earn their place, but the leading "get creative. Classification: read-only. Execution: synchronous. Task support: forbidden." is metadata restatement that duplicates the name and annotations. Reasonable length, but the opening is wasted.

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

Completeness3/5

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

An output schema exists, so return values needn't be described, and the presentation rules are genuinely useful for orchestration. However, for a 23-parameter read tool with 0% schema coverage, the absence of any parameter or sibling-relation guidance leaves the definition materially incomplete.

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

Parameters1/5

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

Schema description coverage is 0% across 23 parameters, and the description names none of them, not even the required creativeId. With the schema providing no parameter documentation, the description needed to compensate and does not, leaving every input undocumented.

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

Purpose2/5

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

The description opens with "get creative," a verbatim restatement of the name, which is tautological. It hints at the return content ("internal application state for LeanrIQ and ChatGPT orchestration") but never states plainly that it retrieves a single creative by ID, and it does not differentiate from siblings like list_creatives or get_creative_intelligence.

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 guidance provided is about output presentation (use assistantSummary first, never show raw JSON, mention IDs sparingly, suggest next LeanrIQ action), not about when to call this tool versus alternatives. There is no when-to-use, prerequisite, or sibling-selection guidance, so an agent gets no help choosing get_creative over the many other get_* and list_* tools.

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

get_creative_intelligenceRead saved advertiser creative opportunities and source provenance.C
Read-onlyIdempotent
Inspect

Read saved advertiser creative opportunities and source provenance.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
advertiserIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior. The description adds genuinely new context beyond that: synchronous execution, task support forbidden, and that the payload is internal orchestration state with presentation rules. It stops short of describing pagination or volume characteristics, but adds real value over 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.

Conciseness3/5

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

The purpose is front-loaded, but the remainder is a dense block of boilerplate response-formatting rules with a duplicated period and slight redundancy ('raw JSON, data, or meta'). It is readable but not tight; the presentation guidance crowds out actual tool semantics.

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?

An output schema exists, so return values need not be explained, and the annotations carry the safety profile. But with 15 parameters at 0% schema coverage and no parameter guidance in the description, the definition is materially incomplete for correctly invoking this read tool.

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?

The schema has 15 parameters with 0% description coverage, and the description mentions no parameter at all—not even the required advertiserId. With this many undocumented inputs, the description was the only place to compensate and it contributes nothing, so it fails badly here.

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

Purpose4/5

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

States a specific verb and resource ('Read saved advertiser creative opportunities and source provenance'), so the core action is clear. However, it does not differentiate from closely named siblings such as get_creative_intelligence_run, run_creative_intelligence, or create_creative_intelligence_plan, leaving an agent to infer which one to call.

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 only 'usage' guidance concerns response presentation (use assistantSummary first, don't display raw JSON) rather than when to select this tool versus alternatives. There is no statement of when-to-use, prerequisites, or which sibling to prefer, so tool-selection guidance is essentially absent.

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

get_creative_intelligence_runRead an exact durable intelligence run, including stage, terminal state and retry metadata.C
Read-onlyIdempotent
Inspect

Read an exact durable intelligence run, including stage, terminal state and retry metadata.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
runIdYes
seatIdNo
seatNameNo
advertiserIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.9/5.0
Behavior4/5

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

The annotations already declare read-only, idempotent and non-destructive, but the description adds genuine context beyond them: synchronous execution, task support forbidden, that the payload is internal orchestration state, and explicit presentation constraints (use assistantSummary, don't dump raw JSON, mention IDs only for follow-up). Those output-handling rules are useful behavioral guidance the annotations do not cover.

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

Conciseness3/5

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

The purpose is front-loaded, but the first sentence merely repeats the title, and the bulk of the text is a generic presentation-style block that is long and reused-looking. It is readable but carries noticeable redundancy and a trailing run of imperative style rules.

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?

An output schema exists so return values needn't be explained, and annotations cover the safety profile, but this is a 16-parameter tool with 0% schema coverage and the description supplies no parameter or routing context. Small hints about output contents ('stage, terminal state, retry metadata') help, yet the agent is left guessing most inputs.

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

Parameters1/5

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

Schema description coverage is 0% across 16 parameters and the description says nothing about any of them, not even the two required identifiers (advertiserId, runId). The lone word 'exact' does not convey enough to compensate for such a large undocumented parameter surface.

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 opener states a specific verb and resource plus the content of the read ('stage, terminal state and retry metadata'), so the agent knows what it fetches. However, it is essentially the title repeated verbatim and never distinguishes this from close siblings such as get_task, get_creative_intelligence, or leanriq_get_creative_intelligence_run.

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

Usage Guidelines2/5

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

The description gives instructions for how to present the response (use assistantSummary, avoid raw JSON) but no guidance on when to select this tool over alternatives like get_task or get_creative_intelligence. There is no when-to-use or when-not-to-use framing and no prerequisites or alternatives named.

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

get_current_seatget current seatC
Read-onlyIdempotent
Inspect

get current seat. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.4/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, non-destructive, and closed-world, so the bar is lower. The description meaningfully adds that execution is synchronous, task support is forbidden, and that the returned JSON is internal orchestration state that should be summarized via assistantSummary rather than shown raw. This is genuine behavioral context beyond structured fields.

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

Conciseness3/5

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

The text is compact and readable, but most of it is output-formatting policy that reads like shared boilerplate rather than tool-specific definition. Front-loading is wasted on a name restatement instead of purpose or parameter meaning.

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?

An output schema exists, so return-value explanation is not required, but with 14 undocumented parameters at 0% coverage and no usage guidance the definition leaves the agent unable to determine which inputs to supply. For a 14-parameter tool this is a significant shortfall.

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?

There are 14 input parameters with 0% schema description coverage, and the description explains none of them — not even the obvious seatId/seatName selector or the locale/market fields. The only mention of IDs concerns output presentation ('Mention IDs only when useful'), which does not help an agent populate any input.

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

Purpose2/5

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

The only purpose statement is 'get current seat,' which restates the tool name and title verbatim. It gives no distinguishing detail versus siblings like get_current_user, leanriq_current_seat, or list_accessible_seats, so an agent cannot tell what 'seat' means or how this differs without opening the schema.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives such as leanriq_select_seat or get_current_user. The 'suggest the next best LeanrIQ action' line is generic advice, not a selection condition for this tool.

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

get_current_userget current userC
Read-onlyIdempotent
Inspect

get current user. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.4/5.0
Behavior4/5

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

Beyond the annotations (readOnly, idempotent, non-destructive), it discloses that execution is synchronous and that task support is 'forbidden,' plus that the returned payload is internal state meant for orchestration rather than display. These are genuine behavioral facts not present in the annotation block. It stops short of describing pagination, auth, or error behavior, but the annotations already cover the safety profile.

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?

It is front-loaded with classification metadata, which is reasonable, but the majority of the text is response-presentation policy ('Never display raw JSON... suggest the next best LeanrIQ action') that reads like system-prompt boilerplate rather than tool documentation. That material does not help select or invoke the tool, so several sentences fail to earn their place here.

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?

An output schema exists, so return values need not be explained, and the annotations carry the safety profile. However, for a 14-parameter tool with fully undocumented inputs, the description is silent on every parameter, which is the largest gap an agent faces when invoking it. Response-handling advice outweighs actual invocation guidance.

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?

The tool has 14 parameters, including nested objects, with 0% schema description coverage and no enums, yet the description says nothing about any of them (seatId, targetMarkets, marketContext, etc.). With zero schema documentation and zero description coverage, an agent has no way to know what any parameter means or which are relevant.

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

Purpose2/5

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

The purpose sentence, 'get current user,' simply restates the tool name and title verbatim, with no additional scope or distinction. Siblings like get_current_seat and leanriq_current_seat are never mentioned, so an agent cannot tell from the description why it would pick get_current_user over those. The only added detail ('internal application state for LeanrIQ and ChatGPT orchestration') describes the output, not the purpose.

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

Usage Guidelines2/5

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

The description gives extensive guidance on how to present the response ('Use assistantSummary first,' 'Prefer concise, human language'), but none on when to invoke this tool versus the many get_* siblings. There is no condition, prerequisite, or alternative named for tool selection. Output-formatting rules are not usage guidelines.

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

get_flightget flightC
Read-onlyIdempotent
Inspect

get flight. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdNo
flightIdYes
seatNameNo
accountIdNo
previewIdNo
campaignIdNo
creativeIdNo
templateIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.1/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnly, idempotent, non-destructive), and the description repeats the read-only classification. It does add genuine context beyond annotations: the payload is internal orchestration state, and specific presentation rules (use assistantSummary, never show raw JSON, IDs only for follow-up). It stops short of describing lookup behavior, failure modes, or permissions.

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

Conciseness2/5

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

The leading "get flight" sentence is pure tautology and the rest is a chain of metadata flags and formatting directives rather than a front-loaded explanation of the tool. Information is present but poorly ordered and padded with low-value fragments.

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?

An output schema exists so return structure needn't be explained, but with 23 undocumented parameters, nested objects, and no explanation of what is being fetched, the definition is not complete enough for an agent to understand or invoke the tool confidently.

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

Parameters1/5

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

Schema description coverage is 0% across 23 parameters, and the description adds nothing about any parameter, including the required flightId. For a tool this broad (23 params, nested objects) the description completely fails to compensate for the schema gap.

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

Purpose2/5

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

"get flight. Classification: read-only. Execution: synchronous." restates the name and name-adjacent metadata without ever saying what a flight is or what the tool retrieves. Nothing distinguishes it from siblings like list_flights, get_task, or get_campaign.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance relative to alternatives (list_flights, get_task, validate_flight, update_flight). It only addresses how to present the response, not when this tool should be selected.

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

get_leanriq_capabilitiesDescribe the LeanrIQ outcomes available to this caller, its current capability profile, safe starting action, and effective build/Studio/publish boundaries. This is concise discovery, not a raw tool-registry dump.B
Read-onlyIdempotent
Inspect

Describe the LeanrIQ outcomes available to this caller, its current capability profile, safe starting action, and effective build/Studio/publish boundaries. This is concise discovery, not a raw tool-registry dump.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, and the description reinforces them with 'Classification: read-only', 'Execution: synchronous', and 'Task support: forbidden' — adding the useful fact that no task handle is returned. It also adds distinctive output-handling behavior (use assistantSummary first, never display raw JSON, mention IDs only when useful) that goes beyond structured fields.

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

Conciseness3/5

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

The opening sentence duplicates the title verbatim (including a stray double period), wasting the most valuable position, and the description is a single run-on block. The second half — classification and output-display rules — is dense and earns its place, but the front-loaded redundancy costs it.

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?

An output schema exists, so return values need not be described, and the output-handling conventions are covered well. However, for a tool exposing 14 undocumented locale/market/seat parameters whose relationship to 'capabilities' is never explained, the definition leaves an agent guessing how inputs shape the response.

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?

There are 14 parameters with 0% schema description coverage, and the description explains none of them — no meaning for seatId, targetMarket, marketContext, or the locale arrays. With low coverage the description is expected to compensate, and it does not; the locale/market params also sit oddly against a plain capabilities-discovery purpose.

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

Purpose4/5

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

The description states a specific verb ('Describe') and resource (LeanrIQ outcomes, capability profile, safe starting action, build/Studio/publish boundaries) scoped 'to this caller'. It is clear on its own, but it never distinguishes itself from the overlapping siblings get_capabilities, get_permissions, or leanriq_current_seat, so an agent cannot route between them from this text alone.

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

Usage Guidelines3/5

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

The framing 'This is concise discovery, not a raw tool-registry dump' implies a first-call/session-bootstrap role, but there is no explicit statement of when to prefer this over get_capabilities or get_permissions, nor any preconditions or exclusions. Usage is only implied.

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

get_media_buy_deliveryAdCP-standard media-buy delivery reporting.C
Read-onlyIdempotent
Inspect

AdCP-standard media-buy delivery reporting.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
extNo
seatIdNo
accountNo
contextNo
end_dateNo
seatNameNo
start_dateNo
adcp_versionNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
media_buy_idsYes
status_filterNo
targetMarketsNo
contentLocalesNo
time_granularityNo
attribution_windowNo
defaultContentLocaleNo
reporting_dimensionsNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo
include_window_breakdownNo
include_package_daily_breakdownNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive and closed-world behavior, yet the description adds real context: synchronous execution, task support forbidden, and explicit output-handling rules (never display raw JSON, lead with assistantSummary, mention IDs only when useful). That is substantive behavioral guidance beyond the structured annotations, though pagination/rate limits are unaddressed.

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?

Purpose is front-loaded and the presentation rules are actionable, but there is a duplicated period after 'reporting..' and the classification boilerplate ('Classification: read-only. Execution: synchronous. Task support: forbidden.') largely restates the annotations in a dense block. The output-formatting sentences are longer than needed but do earn their place in this orchestration context.

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?

An output schema exists, so return values need not be described, and annotations cover the safety profile. However, for a 27-parameter reporting tool the description never explains what the report covers, how the filters and granularity shape it, or when to prefer it — leaving the parameter layer effectively undocumented.

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 27 parameters and 0% schema description coverage, the description carries the full burden of explaining parameters, and it mentions none — not the required media_buy_ids, nor start_date/end_date, time_granularity, status_filter, or the reporting_dimensions breakdowns. The schema conveys types and required fields but no semantics, so the agent is left to infer the meaning of nearly every input.

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

Purpose3/5

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

The phrase 'AdCP-standard media-buy delivery reporting' names a resource (media-buy delivery) and an activity (reporting), but it is essentially the title restated with no verb, no indication of what the report contains, and no differentiation from sibling read tools like get_campaign or get_flight. The jargon 'AdCP-standard' adds little for an agent deciding which tool to call.

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

Usage Guidelines2/5

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

The description gives no guidance on when to choose this tool over the many sibling get_* tools; it never states the required media_buy_ids or that a media buy must already exist. The only directive ('Use assistantSummary first') concerns how to present the response, not when to invoke the tool.

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

get_permissionsget permissionsC
Read-onlyIdempotent
Inspect

get permissions. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
accountIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: synchronous execution, task support forbidden, and the presentation contract (assistantSummary first, never expose raw JSON unless asked). It still says nothing about what permissions data is actually returned or any authorization requirements.

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

Conciseness3/5

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

The purpose statement is front-loaded but content-free, followed by three boilerplate classification sentences that largely duplicate annotations, then a long block of response-formatting instructions. The formatting guidance is useful but disproportionately verbose relative to the near-zero information about the tool's actual behavior.

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

Completeness2/5

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

An output schema exists, so return-value structure needn't be explained, but the description leaves the tool's subject matter undefined and completely omits the 15-parameter input surface. For a tool this complex, an agent cannot tell what it queries or how to call it meaningfully.

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?

Fifteen parameters with 0% schema description coverage and zero required fields, and the description mentions none of them. The schema alone gives no semantics for seatId, seatName, accountId, the locale/market fields, or the nested marketContext and marketLanguageProfile objects, so the description had a large burden to fill and contributes nothing.

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

Purpose2/5

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

"get permissions" restates the tool name and title verbatim without naming the resource or scope — seat permissions, user permissions, or account permissions? The description never says what is being retrieved or what distinguishes it from the many sibling get_* tools (get_capabilities, get_current_user, get_current_seat). This is a tautology rather than a purpose statement.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no alternative named. The only contextual instruction is about how to present results (use assistantSummary, avoid raw JSON), which is response formatting, not tool selection. An agent gets no help deciding between this and the other read-only getters.

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

get_taskPoll a durable LeanrIQ task returned by build_ad, revise_creative, trafficking, or another queued capability and continue with the completed output.B
Read-onlyIdempotent
Inspect

Poll a durable LeanrIQ task returned by build_ad, revise_creative, trafficking, or another queued capability and continue with the completed output.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
taskIdYes
seatNameNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the 'Classification: read-only' line mostly restates them. The description does add useful non-schema context—synchronous execution, task-support forbidden, and response-rendering rules (assistantSummary first, hide raw JSON)—but omits polling/retry semantics such as how long a task stays valid or what a pending vs failed task looks like.

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

Conciseness3/5

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

The purpose is front-loaded, but the opening sentence is duplicated verbatim from the title (with a doubled period), and the metadata/formatting block is chatty relative to the core task. Several sentences are styling instructions rather than tool guidance.

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?

An output schema exists, so return values need not be explained, but for a 15-parameter tool with nested context objects and 0% param coverage the description is too thin on inputs. A polling tool should also indicate failure/timeout states, which it does not.

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?

The tool takes 15 parameters at 0% schema description coverage, and the description never names or explains a single one—not even the required taskId or the seat/market context fields. Nothing compensates for the schema gap, leaving the agent to guess what each input means.

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

Purpose5/5

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

States a specific verb+resource ('Poll a durable LeanrIQ task') and identifies exactly which capabilities produce such tasks (build_ad, revise_creative, trafficking). An agent can distinguish this from list_tasks, cancel_task, and retry_task without opening any schema.

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?

Clear context: poll the task object returned by an async capability and continue with the completed output. It does not, however, state when to prefer this over list_tasks or when to abandon polling in favor of cancel_task/retry_task, so no explicit exclusions are offered.

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

get_templateget templateC
Read-onlyIdempotent
Inspect

get template. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdNo
flightIdNo
seatNameNo
accountIdNo
previewIdNo
campaignIdNo
creativeIdNo
templateIdYes
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.2/5.0
Behavior3/5

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

Annotations already declare readOnly=true, idempotent=true, non-destructive, closed-world, so the safety profile is covered. The description adds one genuinely useful disclosure — that the returned JSON is internal orchestration state — but says nothing about auth needs, failure behavior, or what happens with the 22 optional scoping parameters.

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?

Sized reasonably, and the response-formatting directives are actionable, but the opening line is a wasted tautology and the "Task support: forbidden" line is cryptic filler that duplicates annotation-provided metadata.

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?

Although an output schema exists (so return values need not be explained), a 23-parameter lookup with locale/market nesting is significantly under-described: nothing tells the agent what a template contains or which optional scoping parameters matter.

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 23 parameters, only one required, nested objects, and 0% schema description coverage, the description must explain parameter meaning; it explains none. templateId's role as the key identifier and the purpose of seatId/accountId/campaignId/locale scoping params are entirely opaque.

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

Purpose2/5

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

"get template" merely restates the tool name and title; it never says what a template is or what is retrieved. Classification/execution labels add metadata but no functional purpose, and there is no differentiation from the sibling list_templates.

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 only guidance concerns how to phrase the response (use assistantSummary, don't dump raw JSON), not when to call this tool versus list_templates or get_creative. No conditions, prerequisites, or alternatives are provided for tool selection.

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

get_trafficked_assetsget trafficked assetsC
Read-onlyIdempotent
Inspect

get trafficked assets. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdNo
flightIdYes
seatNameNo
accountIdNo
previewIdNo
campaignIdNo
creativeIdNo
templateIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world. The description adds modest value beyond them: synchronous execution and "task support: forbidden," plus output-handling rules (never display raw JSON, mention IDs only when useful). It does not contradict the annotations, but the disclosure is shallow and mostly about presentation rather than tool behavior.

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

Conciseness2/5

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

The opening sentence is redundant with the name, and most of the body is generic response-formatting boilerplate that could be attached to any tool. It is front-loaded but several sentences (repeated "never display raw JSON, data, or meta" guidance) do not earn their place for this specific tool.

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

Completeness2/5

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

An output schema exists, so return-value explanation is not required, but with 23 parameters at 0% coverage the description should clarify selector usage and it does not. Given the tool's complexity and its many sibling read/export tools, the definition is materially under-specified.

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 0% across 23 parameters, so the description carries the full burden and adds nothing. It never clarifies how the many selectors (flightId required vs seatId, assetId, campaignId, targetMarkets, locale fields, marketContext) interact or which are meaningful for filtering. Meaningful parameter names provide only partial self-documentation.

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

Purpose2/5

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

The first sentence merely restates the tool name ("get trafficked assets") without defining what a "trafficked asset" is or what the tool returns. It never distinguishes this read from clear siblings such as export_trafficked_assets, preview_trafficking_output, or traffick_creative. This is essentially a tautology.

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 offers response-formatting guidance (use assistantSummary first, suggest the next best action) but no guidance on when to select this tool versus alternatives. There is no statement of preconditions, scope, or exclusions that would help an agent choose between it and export_trafficked_assets or get_asset.

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

get_vertical_intelligenceget vertical intelligenceC
Read-onlyIdempotent
Inspect

get vertical intelligence. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
briefNo
forceNo
inputNo
assetsNo
promptNo
seatIdNo
taskIdNo
assetIdNo
outputsNoOptional editable/static JPEG/PNG delivery requirements. Studio persistence is required for static output.
audienceNo
campaignNo
creativeNo
flightIdNo
seatNameNo
templateNo
accountIdNo
objectiveNo
advertiserNo
campaignIdNo
creativeIdNo
templateIdNo
creativeIdsNo
persistenceNo
advertiserIdNo
instructionsNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
requestedFormatsNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
skipTraffickedRebuildNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.2/5.0
Behavior3/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world, and the description's 'Classification: read-only' merely repeats that. It does add genuinely new behavioral context, though: the response is internal application state meant for orchestration, 'Task support: forbidden', and explicit rules against surfacing raw JSON/meta to the user. It says nothing about auth, rate limits, or data freshness.

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

Conciseness3/5

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

The first sentence is pure tautology, and the bulk of the text is response-formatting instruction that reads like a system prompt rather than tool documentation. It is front-loaded with classification facts but spends its length on output-handling rather than on what the tool does.

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

Completeness2/5

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

With an output schema present the return shape needn't be described, but for a tool with 40 mostly-undocumented parameters and an unexplained purpose, the description is far from complete. An agent still cannot determine what inputs are needed or what this tool is for beyond the name.

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?

There are 40 parameters at only 3% schema description coverage, so the description must carry the burden of explaining them, and it explains none. Opaque fields like brief, input, assets, template, campaign, force, seatId, and persistence are left entirely undefined in both schema and description.

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

Purpose2/5

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

The description opens by restating the tool name ('get vertical intelligence') and never explains what 'vertical intelligence' actually is or what resource it retrieves. It does not distinguish this tool from near-name siblings like get_world_intelligence, get_creative_intelligence, or get_competitor_intelligence, so an agent cannot tell when this specific tool is the right one.

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 guidance present ('Use assistantSummary first', 'Never display raw JSON', 'suggest the next best LeanrIQ action') concerns how to present output, not when to invoke this tool versus alternatives. There is no statement of the trigger condition, prerequisites, or which sibling to prefer for a related need.

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

get_world_activation_evidenceRead scoped verified event attestations for Studio approval and activation; no publication authority.C
Read-onlyIdempotent
Inspect

Read scoped verified event attestations for Studio approval and activation; no publication authority.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
eventIdsYes
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds real context: synchronous execution, no publication authority, and that the returned JSON is internal orchestration state that should be summarized via assistantSummary rather than displayed raw. This meaningfully exceeds what the annotations provide.

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?

Purpose is front-loaded, but the text contains a duplicated period ('authority..') and is padded with generic orchestration boilerplate (never display raw JSON, mention IDs, suggest next action) that likely repeats across sibling tools rather than being specific to this one.

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 output schema means return values need not be explained, and the description covers read-only behavior and presentation. But for a 16-parameter tool with zero schema coverage and nested objects, the absence of any parameter or scoping semantics leaves a material gap for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0% across 16 parameters, so the description must carry the burden and it adds nothing about any parameter. It does not explain eventIds (the sole required field), the scoping fields (seatId, advertiserId, targetMarket), or the several locale/market fields whose relationships are non-obvious.

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

Purpose4/5

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

States a specific verb and resource ('Read scoped verified event attestations') and adds a scope boundary ('no publication authority'), so an agent can distinguish it from mutation siblings like launch_creative_campaign. However, it never names which sibling to use instead, and the phrase 'Studio approval and activation' is jargon the agent must infer.

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

Usage Guidelines2/5

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

The description gives response-formatting instructions but no when-to-use/when-not-to-use guidance relative to alternatives. 'No publication authority' implies a boundary but does not tell the agent when to call get_world_activation_evidence versus get_world_research_event or get_world_research_events.

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

get_world_intelligenceGet the latest advertiser World Intelligence summary. It is fresh, source-backed context that may be partial; opportunities are recommendations and this never publishes creative.B
Read-onlyIdempotent
Inspect

Get the latest advertiser World Intelligence summary. It is fresh, source-backed context that may be partial; opportunities are recommendations and this never publishes creative.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare the read-only, idempotent, non-destructive profile, and the description adds real context beyond them: the data may be partial, it is source-backed, it never touches published creative, and the JSON is internal orchestration state with an 'assistantSummary' field to prefer. It omits auth needs and rate limits, but the added behavioral framing is genuine.

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

Conciseness3/5

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

The core purpose is front-loaded, but the entry is padded and malformed ('creative.. Classification: read-only...') and mixes pure behavioral metadata (classification, execution mode) with presentation instructions. Every sentence is not fully wasted, but structure could be cleaner.

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?

An output schema exists, so return values need not be fully described, and the description usefully flags the 'assistantSummary' field. But with 15 undocumented parameters and no routing guidance versus siblings, an agent cannot reliably populate the request or choose this call correctly.

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

Parameters2/5

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

The tool exposes 15 parameters (nested objects like marketContext and marketLanguageProfile) with 0% schema description coverage, so the description carries full responsibility for explaining them. It names no parameter at all, leaving identifiers such as seatId, advertiserId, targetMarket, and the locale fields entirely 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 states a specific verb and resource ('Get the latest advertiser World Intelligence summary') and adds scope qualifiers ('fresh, source-backed context that may be partial'). However it does not explicitly distinguish itself from close siblings like run_world_intelligence, list_world_opportunities, or leanriq_get_world_intelligence beyond the phrase 'this never publishes creative'.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance relative to alternatives such as run_world_intelligence, get_world_opportunity, or get_world_research_summary. The text only tells the agent how to present the result, not when to select this tool over twelve-plus sibling retrieval tools.

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

get_world_opportunityGet one active or historical World Intelligence opportunity and its compact provenance in the selected advertiser scope. It does not publish creative.B
Read-onlyIdempotent
Inspect

Get one active or historical World Intelligence opportunity and its compact provenance in the selected advertiser scope. It does not publish creative.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdYes
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, and closed-world traits. The description adds non-annotation context: synchronous execution, task support forbidden, that the payload is internal orchestration state, and how to present it (assistantSummary first, never raw JSON). This meaningfully exceeds the annotation surface.

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?

Purpose is front-loaded and each sentence of the orchestration guidance contributes useful behavior. Minor waste remains, including the doubled period after 'creative..' and a slightly padded response-styling paragraph.

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?

An output schema exists, so return-value explanation is not needed, and annotations cover the safety profile. However, for a 16-parameter tool with 0% schema description coverage and nested objects, the description leaves parameter semantics entirely unexplained, which is a real completeness gap.

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 0% across 16 parameters, so the schema provides no parameter meaning and the description must compensate. The description adds nothing param-specific beyond the vague phrase 'selected advertiser scope'; a caller gets no help with advertiserId, seatId, locales, targetMarkets, or the nested marketContext object.

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

Purpose4/5

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

States a specific verb (Get), resource (World Intelligence opportunity), and scope (one active or historical, in the selected advertiser scope), plus the negative boundary that it does not publish creative. It implies the singular-vs-list distinction against list_world_opportunities, but does not explicitly differentiate from get_world_intelligence.

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

Usage Guidelines2/5

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

The description gives no tool-selection guidance such as when to use this versus list_world_opportunities or get_world_intelligence. The guidance present is about formatting the response to the user, not about choosing this tool over an alternative.

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

get_world_research_decisionRead advertiser-scoped World Intelligence V3 decision with evidence; no publication authority.B
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 decision with evidence; no publication authority.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3/5.0
Behavior4/5

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

Annotations already cover readOnlyHint/idempotentHint/destructiveHint/openWorldHint, so 'Classification: read-only' is redundant. The description does add genuinely non-annotation context: synchronous execution, task support forbidden, and the fact that the payload is internal orchestration state rather than user-facing content. That materially changes how an agent handles the result.

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

Conciseness3/5

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

The purpose is front-loaded and the text is not bloated, but the title is restated almost verbatim (including a doubled period and a repeated 'no publication authority'), and several sentences are generic presentation policy that belongs in a system prompt rather than a per-tool definition. Size is acceptable; signal-to-noise is only fair.

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?

An output schema exists, so return values need not be described, and the assistantSummary pointer is a useful hook. However, for a 20-parameter, nested-object, zero-required tool with no schema descriptions, the definition gives no help on which inputs to supply or what a 'decision with evidence' requires, so an agent cannot reliably invoke it.

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

Parameters2/5

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

There are 20 parameters (entity, question, advertiserId, seatId, targetMarkets, locale fields, nested marketContext) at 0% schema description coverage, and the description explains none of them. With essentially no structured documentation, the description needed to carry the parameter burden and it does not, leaving key inputs like entity vs question vs marketContext completely undefined.

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

Purpose4/5

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

The description names a specific verb and resource ('Read advertiser-scoped World Intelligence V3 decision with evidence') plus a scope qualifier (advertiser-scoped) and a boundary ('no publication authority'). That is enough to distinguish it from write-side siblings like build_world_research_profile or run_world_intelligence, but it never names or contrasts the close read-side siblings (get_world_research_summary, get_world_research_proposal, leanriq_get_world_research_decision), so borderline ambiguity remains.

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 guidance present is about how to present results ('Use assistantSummary first', 'Never display raw JSON...', 'suggest the next best LeanrIQ action'), not about when to call this tool versus its many siblings. There is no condition, trigger, or alternative named, so an agent has no selection guidance.

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

get_world_research_eventRead advertiser-scoped World Intelligence V3 event with evidence; no publication authority.C
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 event with evidence; no publication authority.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so 'Classification: read-only' and 'no publication authority' mostly restate them. The description does, however, add genuine non-schema context: the payload is internal orchestration state, assistantSummary should drive the reply, and raw JSON/IDs should be surfaced only on request.

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

Conciseness3/5

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

The opening clause duplicates the title and the 'Classification/Execution/Task support' triplet largely echoes annotations, with a stray double period. The response-handling sentences are useful but generic boilerplate, so the text is longer than the information it carries.

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?

An output schema exists, so return values need not be described. But with 20 optional parameters, 0% schema coverage and no statement of what identifies an event or advertiser-scope, the definition is not sufficient for an agent to construct a valid, successful call.

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?

There are 20 parameters at 0% schema description coverage, no enums and nested objects (marketContext, marketLanguageProfile), and the description explains none of them. It never indicates that eventId, advertiserId, entity, targetMarket or the locale/market objects mean, nor which combination is needed to resolve an event.

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

Purpose4/5

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

States a specific verb+resource ('Read ... World Intelligence V3 event') with scope ('advertiser-scoped') and a distinguishing qualifier ('with evidence'). However it never separates this tool from the near-identical sibling get_world_research_events (plural) or from get_world_intelligence/get_world_activation_evidence, so an agent cannot tell which retrieval to pick.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, prerequisites, or alternative routing is provided. The only 'use ... first/never/prefer' sentences concern how to phrase the answer to the user, not which tool to select, so selection guidance is effectively absent.

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

get_world_research_eventsRead advertiser-scoped World Intelligence V3 events with evidence; no publication authority.C
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 events with evidence; no publication authority.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, and the description adds real context beyond them: synchronous execution, task support forbidden, and the output being internal application state that should not be surfaced as raw JSON. It still omits anything about pagination or result-set size relative to the 'limit' parameter.

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

Conciseness3/5

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

The purpose is front-loaded, but the bulk of the text is generic presentation boilerplate ('Never display raw JSON... suggest the next best LeanrIQ action') that applies to any read tool rather than this one. A doubled period after 'authority' also signals unpolished construction.

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?

An output schema exists, so return values need not be described, but with 20 undocumented parameters and 0% schema coverage the agent has no basis for constructing a call. The description never addresses scope, filtering, or the sibling-overlap problem, leaving the definition inadequate for a tool of this complexity.

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

Parameters1/5

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

Schema description coverage is 0% across 20 parameters, including nested objects like marketContext and marketLanguageProfile, and the description says nothing about any of them. No filter semantics, no explanation of advertiserId vs seatId vs eventId, and no note on how 'limit' behaves.

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 opening states a specific verb and resource ('Read advertiser-scoped World Intelligence V3 events with evidence') and adds a scope qualifier ('no publication authority'). It is clear on its own, but it is essentially a restatement of the title and does not distinguish itself from the singular sibling get_world_research_event or from leanriq_get_world_research_events.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this tool over get_world_research_event, get_world_research_insights, get_world_research_mentions, or the leanriq_ variant. The description only tells the agent how to present results, not when to invoke the tool or what conditions select it.

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

get_world_research_insightsRead advertiser-scoped World Intelligence V3 insights with evidence; no publication authority.C
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 insights with evidence; no publication authority.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already declare read-only/idempotent/non-destructive, so the classification line is partly redundant; but 'Execution: synchronous' and 'Task support: forbidden' add real behavior. The output-handling rules (never display raw JSON, prefer assistantSummary, mention IDs sparingly) go well beyond any structured field and meaningfully shape agent behavior.

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

Conciseness3/5

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

The first sentence is essentially a restatement of the title (including a stray double period), and the middle metadata ('Classification... Execution... Task support...') is flat. The presentation guidance is useful but arrives undifferentiated rather than front-loaded.

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?

An output schema exists, so return values need not be described, and the presentation guidance is genuinely helpful. But for a 20-parameter tool with zero schema coverage, the complete absence of any parameter explanation leaves the definition inadequate for correct invocation.

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?

Twenty parameters with 0% schema description coverage, and the description documents none of them (entity, question, targetMarkets, seatId, advertiserId, etc. are never explained). With the schema carrying no descriptions, the description had to compensate and instead says nothing about any parameter.

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

Purpose4/5

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

The description states a specific verb and resource ('Read advertiser-scoped World Intelligence V3 insights with evidence'), which is more informative than the bare name. However, it never distinguishes itself from the many related siblings (get_world_intelligence, get_world_research_summary, get_world_research_decision, leanriq_get_world_research_insights), so an agent cannot tell which of these overlapping 'insights' readers to pick.

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

Usage Guidelines2/5

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

The description contains no when-to-use or when-not-to-use guidance and names no alternative tool. Its instructions ('use assistantSummary first', 'suggest the next best LeanrIQ action') govern how to present results, not when this tool should be selected over its siblings.

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

get_world_research_mentionsRead advertiser-scoped World Intelligence V3 mentions with evidence; no publication authority.C
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 mentions with evidence; no publication authority.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, openWorld=false, non-destructive. The description adds value beyond them: 'Execution: synchronous', 'Task support: forbidden', 'no publication authority', and explicit downstream-orchestration rules about assistantSummary, raw JSON masking, and mention IDs. It does not cover pagination, ordering, or evidence shape, keeping it from a 5.

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?

Purpose is front-loaded, but the body mixes classification, execution mode, and presentation policy into a run-on sequence, includes a stray double period, and repeats itself ('LeanrIQ and ChatGPT orchestration'). Functional but not tightly edited.

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?

An output schema exists so return values need not be explained, but with 20 optional parameters at 0% coverage and no selection guidance against ~10 similar research-read siblings, the definition leaves major gaps for a complex query tool.

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?

There are 20 parameters with 0% schema description coverage and no enum hints; the description explains none of them. entity, question, advertiserId, targetMarket, marketContext, locale fields, and the various *Locale arrays are entirely undocumented, so the agent has no basis for choosing or formatting inputs.

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

Purpose4/5

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

States a specific verb (Read) and resource (advertiser-scoped World Intelligence V3 mentions with evidence), and the title adds the scoping constraint 'no publication authority.' It does not differentiate itself from the many sibling get_world_research_* tools (insights, events, decision, summary, etc.), so an agent cannot tell from the text alone which of these it should pick.

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

Usage Guidelines2/5

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

The description offers output-handling instructions (use assistantSummary first, never show raw JSON) but says nothing about when to invoke this tool versus alternatives like get_world_research_insights or get_world_research_events. No preconditions, no exclusions, no selection criteria.

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

get_world_research_profileRead advertiser-scoped World Intelligence V3 profile with evidence; no publication authority.C
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 profile with evidence; no publication authority.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.9/5.0
Behavior4/5

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

With annotations already covering read-only/idempotent/non-destructive/closed-world, the description adds real context: synchronous execution, that 'Task support: forbidden', that the JSON is internal application-state for orchestration, and that output must be rendered through assistantSummary rather than shown raw. These are behavioral facts the annotations do not carry.

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?

Front-loaded purpose is good, but the opening sentence duplicates the title and the 'Classification/Execution/Task support' fragment reads as raw boilerplate. The remaining sentences are output-formatting rules that, while useful, pad the description without adding selection or parameter value.

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

Completeness2/5

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

An output schema exists so return-shape explanation is not required, but for a 20-parameter tool with nested objects and zero schema descriptions the definition leaves invocation under-specified. It is complete on rendering policy but not on how to construct a valid call.

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 20 parameters (nested objects, locale/market/language fields) at 0% schema coverage and 0 required, the description carries the entire burden of explaining them and says nothing about any parameter. The agent cannot tell what 'entity', 'seatId', 'marketContext', or 'languageVariantGroupId' mean or which are needed.

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

Purpose4/5

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

States a specific verb ('Read') plus resource ('World Intelligence V3 profile') and scope ('advertiser-scoped') with a distinct qualifier ('with evidence'). However, the first sentence merely duplicates the title verbatim, and it offers no differentiation from the many parallel siblings (get_world_research_decision, get_world_research_summary, get_world_intelligence, build_world_research_profile).

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

Usage Guidelines2/5

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

There is no guidance on when to call this tool versus the cluster of related get_world_research_* tools or get_world_intelligence. The only instructions concern how to phrase the response to the user, not when to select this tool; 'no publication authority' hints at a limitation but is not a usage rule.

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

get_world_research_proposalRead advertiser-scoped World Intelligence V3 proposal with evidence; no publication authority.B
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 proposal with evidence; no publication authority.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds meaningful context beyond them: 'no publication authority', that the payload is internal orchestration state, and that assistantSummary should lead the response with raw JSON suppressed unless explicitly requested. That is real behavioral disclosure about what the tool returns and how it may be used.

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

Conciseness3/5

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

The purpose is front-loaded and the length is moderate, but the opening repeats the title verbatim (including a doubled period), and roughly half the text is response-formatting boilerplate rather than tool documentation. It is not wasteful enough to be penalized heavily, but it is not tight either.

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?

An output schema exists so return values need not be described, and the annotations cover the safety profile. The remaining gaps are significant for a 20-parameter tool: no parameter meaning and no sibling routing, though the presentation guidance partially compensates.

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 20 parameters and 0% schema description coverage, the schema documents none of them, so the description carries the full explanatory burden. It offers essentially nothing about parameters, only the phrase 'advertiser-scoped' faintly implying advertiserId; entities like seatId, eventId, opportunityId, locale and market fields are entirely unexplained.

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

Purpose4/5

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

States a specific verb and resource ('Read advertiser-scoped World Intelligence V3 proposal with evidence'), so the core action is clear. However it does not distinguish this from the near-identical sibling leanriq_get_world_research_proposal or from other get_world_research_* readers, leaving the agent to infer the difference from the name alone.

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

Usage Guidelines2/5

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

The description gives no when-to-use or when-not-to-use guidance and never names an alternative among the many get_world_research_* / leanriq_* siblings. The only conditional instructions concern how to phrase the reply, not when to select this tool over another.

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

get_world_research_questionRead advertiser-scoped World Intelligence V3 question with evidence; no publication authority.C
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 question with evidence; no publication authority.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint true and destructiveHint/openWorldHint false, so the safety profile is covered. The description adds genuine context beyond that: synchronous execution, task support forbidden, advertiser-scoping, and critically that the returned JSON is internal orchestration state rather than user-facing content. That output-handling disclosure is the valuable addition.

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?

Purpose and execution classification are front-loaded, which is good, but the second half is a long block of user-facing rendering instructions that is verbose and partly restates itself ('no publication authority..' with a doubled period). The rendering guidance is relevant but over-sized relative to the tool-selection information that is missing.

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?

Because an output schema exists, return values need not be explained, and annotations carry the safety profile; the description adds useful orchestration context (sync, no publication authority, present assistantSummary first). But for a 20-parameter tool with zero schema coverage, the complete absence of parameter guidance leaves a meaningful gap.

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?

There are 20 parameters with 0% schema description coverage, and the description supplies no parameter semantics at all. Terms like 'advertiser-scoped' hint at advertiserId, but the remaining nineteen fields (entity, seatId, locales, targetMarkets, marketContext, etc.) are undocumented in both schema and description, so the description fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb (Read) and resource (advertiser-scoped World Intelligence V3 question with evidence), which is more than a tautology. However it does not differentiate from the crowded world-research sibling set (get_world_research_summary, get_world_research_insights, get_world_research_decision, etc.), so an agent cannot tell precisely which question-shaped artifact this returns without opening the schema.

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

Usage Guidelines2/5

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

The description offers response-formatting guidance ('Use assistantSummary first', 'suggest the next best LeanrIQ action') but never states when to call this tool versus the many adjacent world-research getters. There is no when/when-not condition and no named alternative, leaving tool selection entirely to inference.

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

get_world_research_summaryRead advertiser-scoped World Intelligence V3 summary with evidence; no publication authority.C
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 summary with evidence; no publication authority.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so 'Classification: read-only' is a repeat. The description does add something annotations cannot carry: 'Execution: synchronous' and 'Task support: forbidden', which tell the agent not to expect task-based invocation. Still missing auth needs, rate limits, pagination behavior with limit, and what happens absent advertiser context.

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?

Purpose is front-loaded, but the opening sentence duplicates the title almost verbatim (including a stray double period), and roughly half the text is output-formatting instruction ('Never display raw JSON... suggest the next best LeanrIQ action') that is behavioral policy rather than tool semantics. The metadata list is terse but largely boilerplate.

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?

An output schema exists, so return values need not be described. But for a tool this complex (20 params, nested objects, multi-domain scoping across seat/advertiser/market/locale), the description explains no inputs and no behavior for missing scope values, leaving the agent unable to call it correctly beyond trial and error.

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?

20 parameters with 0% schema description coverage (limit, seatId, entity, languageVariantGroupId, marketLanguageProfile, etc.) and the description explains none of them. Per the rubric, low coverage means the description must compensate; it contributes zero parameter meaning, leaving the agent to guess at all 20. This matches the LOW calibration case of undocumented params at 0% coverage.

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

Purpose4/5

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

States a specific verb and resource ('Read advertiser-scoped World Intelligence V3 summary with evidence') plus a scope constraint ('no publication authority'). However, it gives no signal distinguishing this from the many siblings with near-identical resource names (get_world_research_insights, get_world_intelligence, get_world_research_decision), so the agent cannot tell what a 'summary' uniquely provides. Rubric level 4: clear purpose, no sibling differentiation.

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

Usage Guidelines2/5

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

The only guidance is about how to present results ('Use assistantSummary first'), not about when to invoke this tool versus leanriq_get_world_research_summary, get_world_research_insights, or get_world_intelligence. No preconditions, no exclusions, no alternative-routing advice. Effectively no usage guidance.

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

launch_creative_campaignLeanrIQ Creative Runtime: Default preview mode works without Studio and stores research, briefs, builds, QA, and previews in a LeanrIQ workspace. collaborate keeps proposals non-destructive; operate deliberately creates Studio work. Publish is never inferred: traffic_ready and publish remain explicit governed Studio actions.B
Idempotent
Inspect

LeanrIQ Creative Runtime: Default preview mode works without Studio and stores research, briefs, builds, QA, and previews in a LeanrIQ workspace. collaborate keeps proposals non-destructive; operate deliberately creates Studio work. Publish is never inferred: traffic_ready and publish remain explicit governed Studio actions.. Classification: writes to Studio, creates billable AI usage, publishes externally. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
KPINo
ctaNo
toneNo
brandNo
forceNo
offerNo
budgetNo
seatIdNo
channelNo
endDateNo
productNo
audienceNo
elementsNo
flightIdNo
headlineNo
platformNo
seatNameNo
verticalNo
accountIdNo
mustAvoidNo
objectiveYes
skippableNo
startDateNo
approvalIdNo
campaignIdNo
flightNameNo
constraintsNo
creativeIdsNo
destinationNo
funnelStageNo
mustIncludeNo
persistenceNo
targetSizesNo
workspaceIdNo
advertiserIdNo
campaignNameNo
deliverablesNo
saveToStudioNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
executionModeNopreview
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
landingPageUrlNo
sourceAssetIdsNo
supportingCopyNo
thirdPartyTagsNo
durationSecondsNo
revisionRequestNo
workspaceSourceNo
performanceEvidenceNo
defaultContentLocaleNo
sourceFrameImageUrlsNo
workspaceAccessTokenNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
createCampaignIfMissingNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.1/5.0
Behavior5/5

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

Substantial disclosure beyond annotations: classification as a Studio write that incurs billable AI usage and can publish externally, synchronous execution, task support forbidden, mutation modes (validate_only/preview_only/execute), partial-failure policy (completed_items_not_rolled_back), deterministic idempotency-key derivation, and the rule that seatId/seatName must be passed explicitly on a multi-seat write. These materially raise the agent's confidence about side effects and safety.

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

Conciseness2/5

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

The text opens by restating the title nearly verbatim, is a dense run-on with a stray double period, and mixes governance, behavior, and user-facing response style rules. The most decision-relevant facts (mutation modes, seat requirement) are buried in the middle rather than front-loaded.

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?

An output schema exists, so return-value explanation is not required, but for a 63-parameter mutation tool with rich nested objects and enum modes the definition is still incomplete — the vast majority of parameters are unexplained and the relationship between executionMode, persistence, and saveToStudio is never clarified.

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 63 parameters and 0% schema description coverage, the schema does none of the work, so the description must compensate — yet it only addresses idempotencyKey and seatId/seatName. The other ~60 parameters (objective, executionMode, persistence, brand, locales, etc.) carry no semantic explanation in either place.

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

Purpose3/5

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

The description frames the tool around execution modes and governance rather than stating plainly what launch_creative_campaign does (launch/assemble a creative campaign). It implies creation ('operate deliberately creates Studio work') but never gives a clean verb+resource anchor, and it repeats the title verbatim.

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

Usage Guidelines3/5

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

It conveys useful mode-selection guidance — default preview works without Studio, collaborate keeps proposals non-destructive, operate creates Studio work, and publish/traffic_ready are never inferred. However, it never names a sibling tool as an alternative nor states explicit preconditions (e.g. when to use this instead of build_campaign_creative_set or run_creative_chain).

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

leanr_build_campaign_creative_setPlan and create an initial Studio creative set for a campaign that has no saved creatives. Do not use this tool to rebuild existing creatives; use build_ad with campaignId or campaignName, which resolves and rebuilds the full saved Studio inventory. (deprecated alias)A
Idempotent
Inspect

Plan and create an initial Studio creative set for a campaign that has no saved creatives. Do not use this tool to rebuild existing creatives; use build_ad with campaignId or campaignName, which resolves and rebuilds the full saved Studio inventory.. Deprecated alias for build_campaign_creative_set. Classification: creates billable AI usage. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work.

NameRequiredDescriptionDefault
KPIYes
brandNo
notesNo
budgetNo
seatIdNo
billingNo
channelNodisplay
endDateNo
outputsNo
sandboxNo
audienceYes
operatorNo
seatNameNo
accountIdNo
objectiveYes
startDateNo
campaignIdNo
doohContextNo
funnelStageYes
targetSizesNo
advertiserIdNo
campaignNameYes
generateTagsNo
saveToStudioNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
desiredVariantCountNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
strictBrandComplianceNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo
createAdvertiserIfMissingNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A4.1/5.0
Behavior5/5

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

Annotations only say it is a non-read-only, idempotent, non-destructive operation. The description adds billable AI usage, synchronous execution, forbidden task support, three mutation modes (validate_only/preview_only/execute), and a completed_items_not_rolled_back partial-failure policy, plus how an omitted idempotencyKey is derived. This is substantial context beyond the structured hints.

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

Conciseness2/5

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

The first two sentences duplicate the title verbatim, and a large block of response-formatting boilerplate (assistantSummary, never display raw JSON, mention IDs only when useful) is generic cross-tool guidance rather than tool-selection content. Structure is labeled but bloated.

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?

With an output schema present, return values need not be described, and behavior/mutation/idempotency are well covered. However, given 40 parameters and 0% schema description coverage, required-input semantics are left entirely unexplained, so the definition is only partially complete for a tool of this complexity.

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 0% across 40 parameters, and the description explains none of the business inputs (objective, audience, KPI, funnelStage, campaignName, outputs, budget). Only idempotencyKey gets behavioral explanation. For a tool this wide, the description does not compensate for the schema 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?

States a specific verb and resource with scope: 'Plan and create an initial Studio creative set for a campaign that has no saved creatives.' It also distinguishes itself from the sibling build_ad and notes it is a deprecated alias for build_campaign_creative_set, so an agent can place it precisely in the tool graph.

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 an explicit exclusion and a named alternative: 'Do not use this tool to rebuild existing creatives; use build_ad with campaignId or campaignName.' Combined with the deprecated-alias note pointing at build_campaign_creative_set, both the when and the when-not are covered.

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

leanriq_build_adCreate AI Display CreativeDocuments from objective and requestedFormats without pre-existing creatives. Optional outputs requests static JPEG/PNG delivery after save_to_studio while retaining the editable document. Export existing versions with export_creative. Build and save existing Studio creative records. When campaignId or campaignName is supplied, LeanrIQ resolves the complete persisted campaign inventory, uses each saved brief, approved asset set, and eligible global or advertiser template, then runs the canonical Studio Gold build path. Campaign-scoped calls save by default; use persistence preview_only only for an unsaved ad-hoc preview. (deprecated alias)A
Idempotent
Inspect

Create AI Display CreativeDocuments from objective and requestedFormats without pre-existing creatives. Optional outputs requests static JPEG/PNG delivery after save_to_studio while retaining the editable document. Export existing versions with export_creative. Build and save existing Studio creative records. When campaignId or campaignName is supplied, LeanrIQ resolves the complete persisted campaign inventory, uses each saved brief, approved asset set, and eligible global or advertiser template, then runs the canonical Studio Gold build path. Campaign-scoped calls save by default; use persistence preview_only only for an unsaved ad-hoc preview.. Deprecated alias for build_ad. Classification: creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
briefNo
forceNo
inputNo
assetsNo
promptNo
seatIdNo
taskIdNo
assetIdNo
outputsNoOptional editable/static JPEG/PNG delivery requirements. Studio persistence is required for static output.
audienceNo
campaignNo
creativeNo
flightIdNo
seatNameNo
templateNo
accountIdNo
objectiveNo
advertiserNo
campaignIdNo
creativeIdNo
templateIdNo
creativeIdsNo
persistenceNo
advertiserIdNo
instructionsNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
requestedFormatsNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
skipTraffickedRebuildNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.5/5.0
Behavior4/5

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

Goes well beyond the annotations (readOnlyHint=false, idempotentHint=true) by disclosing billable AI usage classification, durable execution, mutation modes (validate_only/preview_only/execute), and a partial-failure policy of completed_items_not_rolled_back. It also explains deterministic idempotencyKey derivation and the requirement that seatId/seatName be supplied on the exact mutation call. Rich and non-obvious.

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

Conciseness3/5

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

The description redundantly reproduces the entire title text verbatim before adding operational metadata, which is wasted space. The appended classification/execution/idempotency content is valuable, but the overall block is a dense wall that is not optimally front-loaded or trimmed.

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?

An output schema exists, so return-value explanation is not required, and the description covers deprecation, campaign resolution, persistence modes, seat requirement, and idempotency. However, for a 40-parameter build tool with 3% schema coverage, the behavioral picture is adequate but the parameter surface is largely unexplained.

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 40 parameters at 3% schema coverage, the schema documents almost nothing, so the description must carry the load. It explains persistence semantics (preview_only vs save_to_studio), seatId/seatName, idempotencyKey, and campaignId/campaignName resolution, but leaves the vast majority of parameters (brief, input, assets, audience, template, outputs shape, locale fields) undefined.

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

Purpose4/5

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

The description states a specific verb and resource (create AI Display CreativeDocuments from objective and requestedFormats) and distinguishes scope against siblings by noting export_creative handles existing versions and build_ad is the canonical non-alias tool. The '(deprecated alias)' and 'Deprecated alias for build_ad' notes are decisive routing information. It is marred only by dense verbosity that buries the core purpose.

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?

Gives concrete when-to-use conditions: no pre-existing creatives, campaign-scoped resolution when campaignId/campaignName is supplied, and save-by-default with preview_only reserved for unsaved ad-hoc previews. It explicitly routes export of existing versions to export_creative. No explicit when-not conditions beyond the alias/deprecation note, so not a 5.

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

leanriq_build_agent_adCreate AI Display CreativeDocuments from objective and requestedFormats without pre-existing creatives. Optional outputs requests static JPEG/PNG delivery after save_to_studio while retaining the editable document. Export existing versions with export_creative. Build and save existing Studio creative records. When campaignId or campaignName is supplied, LeanrIQ resolves the complete persisted campaign inventory, uses each saved brief, approved asset set, and eligible global or advertiser template, then runs the canonical Studio Gold build path. Campaign-scoped calls save by default; use persistence preview_only only for an unsaved ad-hoc preview. (deprecated alias)A
Idempotent
Inspect

Create AI Display CreativeDocuments from objective and requestedFormats without pre-existing creatives. Optional outputs requests static JPEG/PNG delivery after save_to_studio while retaining the editable document. Export existing versions with export_creative. Build and save existing Studio creative records. When campaignId or campaignName is supplied, LeanrIQ resolves the complete persisted campaign inventory, uses each saved brief, approved asset set, and eligible global or advertiser template, then runs the canonical Studio Gold build path. Campaign-scoped calls save by default; use persistence preview_only only for an unsaved ad-hoc preview.. Deprecated alias for build_ad. Classification: creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
briefNo
forceNo
inputNo
assetsNo
promptNo
seatIdNo
taskIdNo
assetIdNo
outputsNoOptional editable/static JPEG/PNG delivery requirements. Studio persistence is required for static output.
audienceNo
campaignNo
creativeNo
flightIdNo
seatNameNo
templateNo
accountIdNo
objectiveNo
advertiserNo
campaignIdNo
creativeIdNo
templateIdNo
creativeIdsNo
persistenceNo
advertiserIdNo
instructionsNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
requestedFormatsNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
skipTraffickedRebuildNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.7/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: 'creates billable AI usage,' 'Execution: durable,' 'Mutation modes: validate_only, preview_only, execute,' and a partial-failure policy ('completed_items_not_rolled_back'). It also discloses that omitted idempotencyKey is derived deterministically and that seatId/seatName must be passed on the exact write call when multiple seats are authorized. This is exactly the extra behavioral burden the structured fields do not carry.

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?

Purpose is front-loaded and the operational notes are useful, but the opening sentences duplicate the title almost verbatim and the body is padded with boilerplate ('The returned JSON is internal application state...' 'Never display raw JSON...'). There is also a stray double period. Several sentences could be tightened without losing meaning.

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?

An output schema exists, so return-value explanation is unnecessary, and the description does cover persistence behavior, seat requirements, idempotency, and deprecation. However, for a 0-required, 40-parameter, 3%-coverage mutation tool, the description leaves too many inputs undefined to be considered complete.

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 40 parameters and only 3% schema description coverage, the description must carry the semantics, and it only explains a fraction: objective, requestedFormats, persistence, outputs (static JPEG/PNG), campaignId/campaignName, seatId/seatName, idempotencyKey. Dozens of parameters (flightId, template, accountId, advertiser, instructions, targetMarket/locales, marketContext, etc.) remain undocumented in both the schema and the description.

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

Purpose4/5

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

States a specific verb and resource ('Create AI Display CreativeDocuments from objective and requestedFormats') and explicitly names two siblings it is not: export_creative for existing versions, and build_ad ('Deprecated alias for build_ad'). That is enough to route an agent, though the surrounding text also claims 'Build and save existing Studio creative records,' which muddies the boundary between creating and rebuilding.

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?

Gives a clear precondition ('without pre-existing creatives'), an explicit alternative ('Export existing versions with export_creative'), and a when-not for the persistence mode ('use persistence preview_only only for an unsaved ad-hoc preview' vs campaign-scoped calls that 'save by default'). It stops short of plainly telling the agent to prefer build_ad over this deprecated alias, which is the most important routing decision here.

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

leanriq_build_doohBuild a DOOH-native poster for an existing Studio creative, compare exact native renders and save the complete editable working version by default. Below-threshold creative review retains a technically valid version without release approval. Explicit saveToStudio=false is an unsaved preview. DOOH never contains CTA buttons. It does not route through Display build_ad. (deprecated alias)A
Idempotent
Inspect

Build a DOOH-native poster for an existing Studio creative, compare exact native renders and save the complete editable working version by default. Below-threshold creative review retains a technically valid version without release approval. Explicit saveToStudio=false is an unsaved preview. DOOH never contains CTA buttons. It does not route through Display build_ad.. Deprecated alias for build_dooh. Classification: writes to Studio, creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
copyNo
assetsNo
formatNo
seatIdNo
campaignNo
creativeNo
seatNameNo
templateNo
accountIdNo
templatesNo
advertiserNo
campaignIdNo
copyPolicyNo
creativeIdNo
doohContextNo
advertiserIdNo
saveToStudioNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
strategyBriefNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
deliveryProfileNo
approvedCopyVariantsNo
defaultContentLocaleNo
designEvidenceContextNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
expectedActiveVersionIdNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A4/5.0
Behavior5/5

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

Annotations only declare write/idempotent/non-destructive, and the description goes well beyond that: it flags billable AI usage, durable execution, partial-failure policy (completed_items_not_rolled_back), the below-threshold review path that retains a valid version without release approval, the seat requirement for writes, and deterministic idempotency-key derivation. This is rich behavioral context an agent cannot get from 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.

Conciseness3/5

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

The purpose and deprecation notice are front-loaded and the operational metadata earns its place, but the description verbatim-restates the title and appends generic orchestration boilerplate ('Never display raw JSON', 'Use assistantSummary first', ID mention policy) that is cross-cutting policy rather than tool-specific content.

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?

An output schema exists, so return values need no explanation, and the write-safety essentials (billable, durable, idempotency, seat requirement, partial-failure policy) are covered. However, for a 35-parameter creative-building tool the parameter semantics remain largely undisclosed, leaving real invocation gaps even if the tool is deprecated.

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 35 parameters at 0% schema description coverage, the description documents only a handful: saveToStudio, seatId/seatName, idempotencyKey, and the CTA exclusion for copy. The bulk of the surface (format, assets, doohContext, marketContext, locale fields, templates) is left unexplained in both schema and description, so it fails to compensate for the coverage gap.

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

Purpose5/5

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

States a specific verb and resource ('Build a DOOH-native poster for an existing Studio creative') and explicitly differentiates from siblings: it names build_ad as the Display path it does not use and identifies itself as the deprecated alias of build_dooh. An agent can place it against build_ad/build_videoad/build_dooh without opening a schema.

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?

Gives clear selection context: it is a deprecated alias for build_dooh, saveToStudio=false means an unsaved preview, and mutation modes (validate_only/preview_only/execute) tell the agent how to invoke it. It stops short of an explicit 'prefer build_dooh instead' instruction, leaving the deprecation implication to be inferred.

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

leanriq_build_world_research_profileBuild a versioned advertiser research graph from configured identity and approved context. (deprecated alias)C
Idempotent
Inspect

Build a versioned advertiser research graph from configured identity and approved context.. Deprecated alias for build_world_research_profile. Classification: read-only. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
advertiserContextNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.6/5.0
Behavior2/5

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

The description adds real behavioral context (synchronous execution, forbidden task support, mutation modes, completed_items_not_rolled_back partial-failure policy, deterministic idempotency-key derivation, per-call seat requirement). But it labels the tool read-only while annotations declare readOnlyHint=false and it elsewhere discusses mutations and seat rules for writes — a direct conflict that will confuse an agent about whether this call mutates state.

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

Conciseness3/5

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

The purpose is front-loaded and the operational notes are ordered sensibly, but the opening sentence is duplicated from the title with a double period, and a large block of generic orchestration advice (assistantSummary, never display raw JSON) is boilerplate that does not earn its space for this specific tool.

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

Completeness2/5

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

An output schema exists, so return values need not be described. However, for a 16-parameter tool with deeply nested identity/context objects at 0% schema coverage, the description supplies almost no parameter-level or structural guidance, leaving an agent unable to construct a correct call from the definition alone.

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

Parameters2/5

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

Schema description coverage is 0% across 16 top-level parameters, including large nested objects (advertiserContext, marketContext), so the description carries the full burden. It explains only the seat-scoping rule for seatId/seatName and references idempotencyKey (which is not even in the schema); the remaining parameters and nested fields are left entirely undocumented.

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

Purpose3/5

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

The description gives a specific verb and resource ("Build a versioned advertiser research graph from configured identity and approved context") and identifies itself as a deprecated alias for build_world_research_profile, which is useful differentiation. However, it lazily repeats the title verbatim with a double period, and the simultaneous "Classification: read-only" and "Mutation modes: validate_only, preview_only, execute" framing muddles what the tool actually is.

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?

Labeling itself a deprecated alias implies the canonical build_world_research_profile should be preferred, which is a usable routing signal. But it never states the condition for choosing this alias over the canonical tool, nor any prerequisites beyond the generic seat sentence, so the when-to-use guidance is only implied.

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

leanriq_campaign_builderBuild a campaign in the LeanrIQ Creative CockpitA
Idempotent
Inspect

One-prompt campaign builder with an interactive MCP App. Phase territories creates three distinct AI creative territories from the campaign objective. Phase build executes the selected territory through the canonical run_creative_chain, saves real Studio creatives, builds ads, returns previews and QA evidence, and never publishes media. A LeanrIQ seat is required; idempotencyKey is required for the build phase. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
brandYes
offerNo
phaseNoterritories
seatIdNo
productYes
audienceYes
seatNameNo
objectiveYes
campaignIdNo
targetSizesNo
advertiserIdNo
campaignNameYes
deliverablesNo
idempotencyKeyNo
landingPageUrlNo
selectedTerritoryNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A4.5/5.0
Behavior5/5

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

The description discloses key behaviors beyond annotations: it never publishes media, saves real Studio creatives, requires a seat and idempotencyKey, and returns internal application state for orchestration. It also explains response handling (not displaying raw JSON, using assistantSummary, suggesting next steps). These details significantly enrich the safety and usage profile beyond annotations like idempotentHint=true and destructiveHint=false. 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.

Conciseness4/5

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

The description is dense but well-structured, front-loading the purpose in the first sentence, then phase details, then requirements and response guidelines. Each sentence adds useful information for an AI agent. It is somewhat long, but justified by the tool's complexity (16 params, two phases, interaction safety). The response-handling instructions are somewhat lengthy but relevant for correct agent behavior.

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 (16 parameters, nested objects, multiple phases) and the presence of an output schema, the description covers the essential operational aspects: phase purpose, required preconditions, mutation safety (never publishes), and how to present results. It doesn't explain every parameter, but the schema provides names and types. The only minor gap is that it doesn't explicitly state what the output schema contains beyond 'internal application state', though it mentions previews and QA evidence.

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 semantics for critical parameters: 'phase' is clarified as having 'territories' and 'build' modes, 'idempotencyKey' is required for build, 'seatId/seatName' are required for mutations with multiple seats, and 'selectedTerritory' is the object from the territories phase used in build. This compensates for the 0% schema coverage for these non-obvious parameters. Other required fields (brand, campaignName, product, audience, objective) are self-explanatory from their names, so the lack of description is less critical.

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 is a 'one-prompt campaign builder' with two distinct phases ('territories' and 'build'), and specifies what each phase does: creating three AI creative territories, then executing the selected territory through run_creative_chain, saving creatives, building ads, and returning previews/QA evidence. It also distinguishes itself from siblings by noting it 'never publishes media,' which separates it from launch/launch_creative_campaign 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 provides clear usage context: it explains the two-phase flow, notes that a LeanrIQ seat is required and idempotencyKey is required for build, and gives response-handling guidelines (use assistantSummary first, don't show raw JSON). It also specifies when seatId/seatName must be supplied on the exact call. However, it does not explicitly name alternative tools or say 'use this when X instead of Y,' though 'never publishes media' implies when you don't want to launch.

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

leanriq_create_briefGenerate Studio-ready design briefs for one or more creatives, using campaign context, brand rules, audience, offer, and format constraints. When creative IDs and saveToStudio are supplied, LeanrIQ saves only when the caller has Studio write permission; otherwise it returns a non-destructive proposal. (deprecated alias)A
Idempotent
Inspect

Generate Studio-ready design briefs for one or more creatives, using campaign context, brand rules, audience, offer, and format constraints. When creative IDs and saveToStudio are supplied, LeanrIQ saves only when the caller has Studio write permission; otherwise it returns a non-destructive proposal.. Deprecated alias for create_creative_brief. Classification: writes to Studio, creates billable AI usage. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
briefNo
forceNo
inputNo
assetsNo
promptNo
seatIdNo
taskIdNo
assetIdNo
outputsNoOptional editable/static JPEG/PNG delivery requirements. Studio persistence is required for static output.
audienceNo
campaignNo
creativeNo
flightIdNo
seatNameNo
templateNo
accountIdNo
objectiveNo
advertiserNo
campaignIdNo
creativeIdNo
templateIdNo
creativeIdsNo
persistenceNo
advertiserIdNo
instructionsNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
requestedFormatsNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
skipTraffickedRebuildNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.6/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: 'writes to Studio, creates billable AI usage', synchronous execution, 'Task support: forbidden', the validate_only/preview_only/execute mutation modes, and the completed_items_not_rolled_back partial-failure policy. It also documents the seat requirement for mutations and deterministic idempotency-key derivation. Not a 5 only because the response-handling boilerplate is orchestration guidance rather than tool behavior.

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

Conciseness4/5

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

Front-loads the purpose and the save/permission condition, then moves to operational constraints. The prose is dense but nearly every clause adds a distinct fact. Minor redundancy from the title/description duplication and the length of the response-formatting boilerplate against such thin parameter documentation keeps it out of 5.

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?

Behaviorally it is thorough for a complex mutation, and the editability of return values is covered by the presence of an output schema. However, for a 40-parameter tool with 3% coverage and no required fields, the description leaves nearly all parameter semantics undocumented, so an agent cannot assemble a valid call from the definition alone. The parameter documentation gap is the dominant deficiency.

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 40 parameters and only 3% schema description coverage, the description must carry parameter meaning but covers at most seatId/seatName, idempotencyKey, creativeIds and the save flag. The remainder (brief, input, audience, campaign, template, marketContext, outputs, locale/market fields, etc.) is left entirely undocumented in schema and description, leaving an agent unable to supply most inputs correctly. It also references 'saveToStudio', a name that does not exist on the schema (the field is 'persistence' with value 'save_to_studio'). No parameter semantics 1-5 rules for 0 params apply here since there are 40.

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

Purpose5/5

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

States a specific verb and resource ('Generate Studio-ready design briefs') plus scope ('for one or more creatives') and the inputs that shape it (campaign context, brand rules, audience, offer, format constraints). Critically, it labels itself a 'deprecated alias for create_creative_brief', which lets an agent distinguish it from the sibling without opening either schema.

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?

Explains the conditional save path: persistence happens only when creative IDs and a save flag are supplied and the caller holds Studio write permission, otherwise a non-destructive proposal is returned. It also flags deprecation, pointing the agent toward the canonical sibling. It does not, however, state an explicit 'prefer create_creative_brief' instruction or any when-not-to-use exclusion.

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

leanriq_create_creative_briefGenerate Studio-ready design briefs for one or more creatives, using campaign context, brand rules, audience, offer, and format constraints. When creative IDs and saveToStudio are supplied, LeanrIQ saves only when the caller has Studio write permission; otherwise it returns a non-destructive proposal. (deprecated alias)A
Idempotent
Inspect

Generate Studio-ready design briefs for one or more creatives, using campaign context, brand rules, audience, offer, and format constraints. When creative IDs and saveToStudio are supplied, LeanrIQ saves only when the caller has Studio write permission; otherwise it returns a non-destructive proposal.. Deprecated alias for create_creative_brief. Classification: writes to Studio, creates billable AI usage. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
briefNo
forceNo
inputNo
assetsNo
promptNo
seatIdNo
taskIdNo
assetIdNo
outputsNoOptional editable/static JPEG/PNG delivery requirements. Studio persistence is required for static output.
audienceNo
campaignNo
creativeNo
flightIdNo
seatNameNo
templateNo
accountIdNo
objectiveNo
advertiserNo
campaignIdNo
creativeIdNo
templateIdNo
creativeIdsNo
persistenceNo
advertiserIdNo
instructionsNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
requestedFormatsNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
skipTraffickedRebuildNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only cover readOnly/destructive/idempotent; the description adds substantial context beyond them: writes to Studio, creates billable AI usage, synchronous execution, task support forbidden, mutation modes (validate_only/preview_only/execute), a partial-failure policy of completed_items_not_rolled_back, and the permission/seat preconditions for a write. This is exactly the kind of behavioral disclosure annotations cannot carry.

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?

Purpose is front-loaded, but the first two sentences duplicate the title verbatim, and the back half is generic orchestration boilerplate (assistantSummary guidance, raw-JSON rules, seat reminders) that is not specific to this tool. It is serviceable but carries noticeable redundancy.

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 40-parameter, permission-gated, billable mutation with a deprecated status, the description covers classification, idempotency behavior, seat requirements, partial-failure semantics, and response-handling guidance. An output schema exists, so return-value detail is correctly left out.

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 only 3% across 40 parameters, so the description must compensate and it does so for the highest-stakes ones: creativeIds, saveToStudio/persistence, seatId/seatName, and idempotencyKey. It leaves the bulk of the schema (market context, locales, targeting fields) unexplained, so it partially rather than fully 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 first sentence states a specific verb and resource (generates Studio-ready design briefs for one or more creatives) plus the inputs that shape it (campaign context, brand rules, audience, offer, format constraints). The final sentence explicitly names the canonical sibling it aliases (create_creative_brief), so an agent can route correctly without opening either schema.

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

Usage Guidelines4/5

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

It states the operative condition clearly: saving to Studio happens only when creative IDs and saveToStudio are supplied AND the caller holds Studio write permission, otherwise a non-destructive proposal is returned. The 'Deprecated alias for create_creative_brief' line signals preference for the canonical tool, but it never explicitly says 'use create_creative_brief instead' or states when this alias should be chosen.

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

leanriq_create_creative_intelligence_planCreate a concise proposed campaign plan from one grounded opportunity. Studio approval is required before campaign creation. (deprecated alias)C
Idempotent
Inspect

Create a concise proposed campaign plan from one grounded opportunity. Studio approval is required before campaign creation.. Deprecated alias for create_creative_intelligence_plan. Classification: read-only. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
advertiserIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdYes
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.8/5.0
Behavior4/5

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

Strong extra context beyond annotations: mutation modes (validate_only, preview_only, execute), partial failure policy (completed_items_not_rolled_back), idempotency derivation when idempotencyKey is omitted, and the rule that seatId/seatName must be supplied on a write when multiple seats are authorized. These are genuinely useful and not derivable from the annotation block. One tension: it labels 'Classification: read-only' while readOnlyHint=false and mutations are described, a stated internal inconsistency that slightly undermines trust.

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

Conciseness2/5

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

The description is a wall of appended policy boilerplate (classification, execution, task support, mutation modes, output-display rules) plus a redundant duplicated sentence and double period. The meaningful content is buried and much of it reads as system-level orchestrator instructions rather than tool-selection guidance.

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?

Against 16 params and rich nested objects, an output schema covers return values so the description need not. But it leaves most input semantics undocumented and doesn't clarify the alias-vs-canonical choice, so it is only minimally adequate for a tool this complex.

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 0% across 16 parameters, so the description must carry the param burden, yet it only touches seatId/seatName and idempotencyKey. The many locale/market parameters (sourceLocale, targetMarkets, contentLocales, marketLanguageProfile, etc.) are neither described nor distinguishable, leaving the agent unable to reason about most inputs.

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

Purpose3/5

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

The opening clause names a specific verb (create) and resource (campaign plan from an opportunity), which is clear. However, the definition immediately undercuts itself by identifying as a 'deprecated alias for create_creative_intelligence_plan', so the agent still cannot tell whether to call this or the canonical sibling. The purpose is stated but the deprecation muddies selection.

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?

It says 'Studio approval is required before campaign creation', which is one prerequisite, but gives no guidance on when to use this alias versus create_creative_intelligence_plan. Naming a deprecated alias without routing the agent to the canonical tool leaves the core selection question unanswered.

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

leanriq_create_production_plancreate production plan (deprecated alias)A
Idempotent
Inspect

create production plan. Deprecated alias for create_production_plan. Classification: creates billable AI usage. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work.

NameRequiredDescriptionDefault
modeNostudio_instructions
brandYes
briefYes
assetsNo
formatYes
seatIdNo
creativeNo
seatNameNo
templateNo
campaignIdNo
creativeIdNo
constraintsNo
advertiserIdNo
campaignNameYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
templateAnalysisNo
studioCapabilitiesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
requestedOperationTypesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.5/5.0
Behavior5/5

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

Far beyond the annotations, it discloses classification (billable AI usage), synchronous execution, forbidden task support, the validate_only/preview_only/execute modes, and a notable partial-failure policy (completed_items_not_rolled_back). The derived idempotency-key behavior is consistent with idempotentHint=true and adds real value.

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

Conciseness3/5

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

The essential fact (deprecated alias) is front-loaded well, but the body is dominated by output-formatting directives for the responding agent ('never display raw JSON', 'suggest the next best action') that are tangential to understanding the tool and inflate length.

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?

An output schema exists so return values need not be explained, and behavioral context is rich. But for a 29-parameter nested mutation the description leaves almost all input semantics unaddressed and contains a mode-description mismatch, so it is not fully complete.

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 29 parameters and 0% schema description coverage the description is the only source of parameter meaning, yet it documents almost none of them. It references an idempotencyKey absent from the schema, and its 'mutation modes' (validate_only/preview_only/execute) conflict with the schema's mode enum (planning/studio_instructions), which is actively misleading.

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

Purpose4/5

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

States a specific verb+resource ('create production plan') and, crucially, identifies itself as a deprecated alias for the sibling create_production_plan, which lets an agent route away from it. However it never elaborates what a 'production plan' actually is, so the core resource stays opaque.

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 'deprecated alias' label implies the canonical create_production_plan should be preferred, and the listed mutation modes hint at execution options. But there is no explicit when-to-use / when-not-to-use statement or direct instruction to prefer the canonical tool, leaving the routing decision to inference.

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

leanriq_create_strategycreate creative strategy (deprecated alias)A
Idempotent
Inspect

create creative strategy. Deprecated alias for create_creative_strategy. Classification: creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work.

NameRequiredDescriptionDefault
goalYes
brandYes
offerNo
seatIdNo
channelNo
contextNo
productYes
audienceYes
seatNameNo
constraintsNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.5/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that the call creates billable AI usage, that execution is durable, that task support is optional, the three mutation modes, and the partial-failure policy (completed_items_not_rolled_back). It also explains the idempotencyKey derivation fallback, which complements the idempotentHint annotation with concrete mechanics.

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?

Purpose and deprecation are front-loaded, and the behavioral clauses earn their place. However, a large block is generic orchestration boilerplate about assistantSummary, hiding raw JSON, and response tone that is not specific to this tool and dilutes the signal.

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?

An output schema exists, so return-value explanation is not required, and behavioral traits (billing, durability, failure policy) are well covered. But for a 22-parameter tool with 0% schema descriptions, the description leaves the entire input surface undocumented, which is a meaningful gap.

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 0% across 22 parameters, so the description carries the burden but does not name or explain any of the business inputs (brand, product, audience, goal, constraints, locale/market fields). The only parameter-adjacent content is idempotencyKey behavior, which is not even a declared property in the schema.

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

Purpose4/5

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

States a specific verb+resource ('create creative strategy') and flags it as a deprecated alias for create_creative_strategy, which is the single most important thing an agent needs to know. It does not, however, differentiate from the many create_* siblings actually present in the toolset (create_creative_brief, create_production_plan, etc.), and the canonical create_creative_strategy is not even in the sibling list.

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

Usage Guidelines3/5

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

'Deprecated alias' strongly implies an agent should prefer the canonical tool, and the mutation modes (validate_only, preview_only, execute) hint at safe trial usage. But there is no explicit 'use X instead' routing and no stated when-to-use/when-not versus the other creation tools.

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

leanriq_current_seatGet active seatA
Read-onlyIdempotent
Inspect

Purpose: show the currently active LeanrIQ seat for the authenticated user. Output: returns the active seat and allowed seat list. Exact-ID read tools can resolve a unique authorised seat server-side. Select or pass a seat when you want to force a workspace, when a write is requested, or when LeanrIQ asks you to disambiguate. Constraints: read-only helper tool. Failure cases: AUTH_REQUIRED, SEAT_ACCESS_DENIED. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A4.6/5.0
Behavior4/5

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

The description goes beyond annotations by listing failure cases (AUTH_REQUIRED, SEAT_ACCESS_DENIED), noting the output is internal application state for orchestration, and providing instructions about using assistantSummary and not displaying raw JSON. This adds useful behavioral context without contradicting the readOnlyHint=true and destructiveHint=false annotations.

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 well-structured with labels (Purpose, Output, Constraints, Failure cases, etc.) but is somewhat verbose, including user-communication style instructions (e.g., 'Never display raw JSON'). These are useful but could be more condensed. Still, every section earns its place.

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 no parameters and an existing output schema, the description fully covers purpose, output, failure modes, usage guidance, and constraints. It is complete for an agent to understand and invoke 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?

The schema has zero parameters (coverage 100% vacuously). The description mentions that a seat can be 'passed' when needed, which aligns with the tool's purpose but does not add parameter-level detail since there are none. Baseline 4 applies.

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

Purpose5/5

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

The description clearly states the tool's verb+resource: 'show the currently active LeanrIQ seat' for the authenticated user. It also specifies the output (active seat and allowed seat list), distinguishing it from siblings like get_current_seat and list_accessible_seats.

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?

The description provides explicit guidance on when to use this tool: when a seat needs to be selected or passed to force a workspace, when a write is requested, or when disambiguation is needed. It also mentions that exact-ID read tools can resolve seats server-side, giving context on alternatives.

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

leanriq_get_brand_profileResearch and return a LeanrIQ brand profile. This read capability does not save to Studio. (deprecated alias)B
Read-onlyIdempotent
Inspect

Research and return a LeanrIQ brand profile. This read capability does not save to Studio.. Deprecated alias for get_brand_profile. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
brandUrlYes
seatNameNo
brandNameYes
advertiserIdNo
forceRefreshNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
competitorLimitNo
requestedSectionsNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/openWorld/non-destructive, yet the description adds real behavioral context: synchronous execution, task support forbidden, and explicit output-handling rules (use assistantSummary first, don't surface raw JSON, mention IDs sparingly). That is meaningful disclosure beyond the structured hints.

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?

Response-handling guidance is front-loaded and useful, but the first sentence duplicates the title verbatim and is marred by a doubled period ('Studio..'). Roughly half the text serves the agent, the rest is redundancy inherited from the title.

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?

With an output schema present, return values needn't be described, and annotations cover safety, so those burdens are lifted. However, a tool with 20 parameters and zero schema descriptions leaves the agent without any parameter guidance, so the definition is only adequate overall.

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?

There are 20 parameters with 0% schema description coverage, and the description says nothing about any of them — not brandName/brandUrl (the only required ones), forceRefresh, targetMarket(s), locales, competitorLimit, or requestedSections. The description fails entirely to compensate 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?

States a specific verb and resource ('Research and return a LeanrIQ brand profile') and immediately identifies itself as a 'Deprecated alias for get_brand_profile', which lets an agent distinguish it from its primary sibling and from neighbors like get_brand_visuals.

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?

It notes the capability 'does not save to Studio', implying a read context, but never tells the agent when to pick this alias over get_brand_profile or what conditions make the alias appropriate. A deprecated alias should explicitly say to prefer the canonical tool, and that selection guidance is absent.

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

leanriq_get_brand_visualsCollect brand logos, imagery, colours, fonts, and visual previews for use in Studio creative builds. Use this before build_ad when a campaign needs visual grounding; this read capability does not save to Studio. (deprecated alias)B
Read-onlyIdempotent
Inspect

Collect brand logos, imagery, colours, fonts, and visual previews for use in Studio creative builds. Use this before build_ad when a campaign needs visual grounding; this read capability does not save to Studio.. Deprecated alias for get_brand_visuals. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
optionsNo
storageNo
seatNameNo
brandNameYes
websiteUrlYes
advertiserIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/non-destructive/open-world, so 'Classification: read-only' is redundant. However the description adds genuinely new behavioural facts: synchronous execution, task support forbidden, no persistence to Studio, and a response contract (use assistantSummary first, never surface raw JSON unless asked, mention IDs only when useful).

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

Conciseness2/5

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

The title text is repeated verbatim in the description, producing a double-period artifact ('Studio.. Deprecated alias'), and the deprecation notice is buried behind the full purpose sentence instead of leading. The trailing orchestration boilerplate is generic and dilutes the tool-specific content.

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?

Because an output schema exists, return-value enumeration is not needed, and the description usefully defines how to present results to the user. But for a 19-parameter, nested-object tool with zero schema descriptions, the absence of any invocation guidance leaves an agent under-equipped, and the deprecation provides no migration path.

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 0% across 19 parameters with nested options/storage/marketContext objects, so the description carries the full burden and delivers nothing. The list of collected artifact types loosely maps to fetchLogos/fetchImages/extractColours, but limits, locales, storage targets, and required-vs-optional status are entirely 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?

Names a specific verb and resource set ('Collect brand logos, imagery, colours, fonts, and visual previews') and ties it to a downstream use ('for use in Studio creative builds'). It also distinguishes itself from the canonical sibling by declaring 'Deprecated alias for get_brand_visuals', though it never explicitly instructs the agent to prefer the non-deprecated 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?

'Use this before build_ad when a campaign needs visual grounding' gives a clear trigger and ordering constraint relative to a specific sibling. It also clarifies the side-effect boundary ('this read capability does not save to Studio'). No explicit when-not guidance or migration instruction despite the deprecation notice.

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

leanriq_get_competitor_creative_intelligenceRun canonical LeanrIQ Competitor Intelligence V2 for one advertiser-scoped competitor. Defaults match Studio: 90-day DISPLAY evidence and no mixed social/video banner inference. Without forceRefresh, an existing canonical result is reused when available. (deprecated alias)B
Idempotent
Inspect

Run canonical LeanrIQ Competitor Intelligence V2 for one advertiser-scoped competitor. Defaults match Studio: 90-day DISPLAY evidence and no mixed social/video banner inference. Without forceRefresh, an existing canonical result is reused when available.. Deprecated alias for run_competitor_intelligence. Classification: creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work.

NameRequiredDescriptionDefault
nameNo
limitNo
domainNo
marketNo
regionNo
seatIdNo
marketsNo
websiteNo
seatNameNo
brandNameNo
advertiserIdNo
competitorIdNo
evidenceModeNoDISPLAY
forceRefreshNo
lookbackDaysNo
sourceLocaleNo
strategyModeNoBOTH
targetMarketNo
contentLocaleNo
evidenceLimitNo
marketContextNo
strategyModesNo
targetMarketsNo
competitorNameNo
contentLocalesNo
competitorDomainNo
competitorWebsiteNo
recommendationModeNoFULL
defaultContentLocaleNo
competitorKeyMessagesNo
competitorPositioningNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo
advertiserGuidanceSnapshotNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.2/5.0
Behavior4/5

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

Beyond annotations, it adds high-value context: 'creates billable AI usage,' 'Execution: durable,' 'Task support: optional,' and a partial failure policy (completed_items_not_rolled_back). It also explains idempotencyKey derivation for accidental replays. These are meaningful behavioral facts the annotations do not carry.

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

Conciseness2/5

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

The useful purpose sentence is front-loaded, but it is followed by a long tail of metadata (classification, execution, mutation modes, partial failure policy) and generic response-formatting boilerplate ('Never display raw JSON,' 'Use assistantSummary first') that is not specific to this tool. A doubled period also signals sloppy templating.

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?

An output schema exists, so return values needn't be described, and the description covers caching/defaults, billable classification, and partial-failure semantics. However, for a 37-parameter, zero-coverage tool with nested objects it still leaves most input semantics undocumented, so it is only adequate rather than complete.

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 37 parameters at 0% schema description coverage, the description only touches a few: forceRefresh behavior, the DISPLAY/90-day defaults (evidenceMode, lookbackDays), and idempotencyKey. The vast majority of business-critical inputs (advertiserId, competitorId, seatId, strategyMode, etc.) are unexplained in both schema and description.

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

Purpose4/5

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

The description states a specific verb and resource: 'Run canonical LeanrIQ Competitor Intelligence V2 for one advertiser-scoped competitor,' and identifies the sibling it aliases ('Deprecated alias for run_competitor_intelligence'). This lets an agent distinguish it, though the name prefix 'get_' conflicts with the actual run/mutation nature.

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

Usage Guidelines3/5

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

It discloses a key selection condition ('Without forceRefresh, an existing canonical result is reused when available') and mentions mutation modes (validate_only, preview_only, execute). But it never explicitly directs the agent to prefer the canonical run_competitor_intelligence tool over this deprecated alias, leaving that inference to the reader.

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

leanriq_get_creative_intelligenceRead saved advertiser creative opportunities and source provenance. (deprecated alias)A
Read-onlyIdempotent
Inspect

Read saved advertiser creative opportunities and source provenance.. Deprecated alias for get_creative_intelligence. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
advertiserIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely new context: synchronous execution, task support forbidden, and that the returned JSON is internal orchestration state that must not be surfaced raw. 'Classification: read-only' merely repeats the annotation, but the output-handling constraints add real value.

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?

Purpose and deprecation status are front-loaded, and the sentences are individually short. It loses a point for restating the title verbatim (including a doubled period) and for a fairly lengthy block of response-formatting rules that could be tightened.

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 the complexity (15 parameters, nested objects) the description covers purpose, deprecation, execution model and output handling adequately, and an output schema exists so return values need not be described. The complete silence on parameters is the remaining substantive gap for a tool this wide.

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?

There are 15 parameters with 0% schema description coverage, and the description explains none of them. The high-coverage baseline does not apply, and the description does not compensate for the gap in any way.

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 and resource ('Read saved advertiser creative opportunities and source provenance') and immediately classifies itself as a 'Deprecated alias for get_creative_intelligence', so the agent can distinguish it from the canonical sibling without opening either schema.

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 deprecation note signals that get_creative_intelligence is the preferred path, and the closing guidance explains how to respond to the user. However it never explicitly says 'prefer get_creative_intelligence' or states the condition under which this alias should still be called, leaving the when/when-not to inference.

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

leanriq_get_creative_intelligence_runRead an exact durable intelligence run, including stage, terminal state and retry metadata. (deprecated alias)B
Read-onlyIdempotent
Inspect

Read an exact durable intelligence run, including stage, terminal state and retry metadata.. Deprecated alias for get_creative_intelligence_run. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
runIdYes
seatIdNo
seatNameNo
advertiserIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, but the description adds execution semantics not present there: 'Execution: synchronous' and 'Task support: forbidden'. It also discloses output handling (returned JSON is internal state; use assistantSummary first; never display raw JSON), which is genuine behavioral context beyond structured fields.

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

Conciseness3/5

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

The first sentence is a verbatim duplicate of the title, wasting the highest-value slot. The rest is front-loaded and reasonably tight, but the classification/execution/task-support boilerplate reads as generated metadata rather than earned prose.

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?

An output schema exists so return values need no explanation, and annotations plus the description cover safety and presentation behavior. The significant remaining gap is the 16 undocumented input parameters with no schema descriptions, which the description does nothing to compensate for.

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?

The schema has 16 parameters with 0% description coverage, so the description carries the full documentation burden for parameters and yet mentions none of them. Required advertiserId/runId, and the seat/market/locale fields, are entirely unexplained in prose.

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

Purpose4/5

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

States a specific verb (Read) and resource (an exact durable intelligence run) plus the payload contents (stage, terminal state, retry metadata), and explicitly names the canonical sibling get_creative_intelligence_run that it aliases. However the opening sentence is a verbatim repeat of the title, so there's a little tautology, and it doesn't distinguish itself from get_creative_intelligence or the run_* tools beyond the deprecation note.

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?

'Deprecated alias for get_creative_intelligence_run' is an explicit when-not-to-use signal that routes the agent to the canonical tool. Beyond that routing there is no positive condition for when this deprecated variant should be selected, so it stops short of the full when/when-not/alternatives treatment.

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

leanriq_get_vertical_intelligenceget vertical intelligence (deprecated alias)C
Read-onlyIdempotent
Inspect

get vertical intelligence. Deprecated alias for get_vertical_intelligence. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
briefNo
forceNo
inputNo
assetsNo
promptNo
seatIdNo
taskIdNo
assetIdNo
outputsNoOptional editable/static JPEG/PNG delivery requirements. Studio persistence is required for static output.
audienceNo
campaignNo
creativeNo
flightIdNo
seatNameNo
templateNo
accountIdNo
objectiveNo
advertiserNo
campaignIdNo
creativeIdNo
templateIdNo
creativeIdsNo
persistenceNo
advertiserIdNo
instructionsNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
requestedFormatsNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
skipTraffickedRebuildNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.4/5.0
Behavior3/5

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

Restates classification (read-only), execution model (synchronous), and task support (forbidden), which largely duplicate the annotations (readOnlyHint, idempotentHint, non-destructive). The response-handling guidance (use assistantSummary first, never show raw JSON) is genuinely useful 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.

Conciseness3/5

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

Front-loaded with deprecation and alias, which is good. But most of the text is response-formatting boilerplate about assistantSummary and not showing JSON, which is only loosely specific to this tool and could belong to any tool.

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

Completeness2/5

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

An output schema exists so return values need not be explained, and annotations carry safety. But a tool with 40 undocumented parameters, hidden semantics of brief/input/assets, and a deprecation relationship leaves too much unsaid for correct invocation.

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

Parameters1/5

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

Schema has 40 parameters with 3% description coverage; the description mentions none of them, not even the salient ones (prompt, seatId, outputs, persistence, idempotencyKey). With almost no schema coverage the description must compensate and does not at all.

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

Purpose3/5

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

States the resource ('vertical intelligence') and that it is a deprecated alias for get_vertical_intelligence, which names the sibling. But the underlying purpose (what vertical intelligence actually is) is never described, and there is no distinction from get_vertical_intelligence beyond 'deprecated alias'.

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?

Only guidance is the implicit 'use the real get_vertical_intelligence instead' that comes from calling this deprecated. No explicit when-to-use-this vs the canonical tool, and no mention of whether callers should ever prefer it. Useful response-style directives are present but that is not tool-selection guidance.

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

leanriq_get_world_activation_evidenceRead scoped verified event attestations for Studio approval and activation; no publication authority. (deprecated alias)B
Read-onlyIdempotent
Inspect

Read scoped verified event attestations for Studio approval and activation; no publication authority.. Deprecated alias for get_world_activation_evidence. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
eventIdsYes
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so 'Classification: read-only' is largely redundant. The description does add non-structured traits though: 'Execution: synchronous' and 'Task support: forbidden,' plus output presentation guidance.

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?

Purpose is front-loaded, but the title text is duplicated at the start of the description and there is a doubled period ('authority..'). Roughly half the text is generic presentation boilerplate (assistantSummary, never display raw JSON) rather than tool-selection information.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, and deprecation is disclosed. However, for a tool with 16 parameters, nested objects, and 0% schema descriptions, the description gives an agent no help in constructing a valid call beyond the required eventIds.

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 0% across 16 parameters with only eventIds required, and the description explains none of them. Nested objects like marketContext and marketLanguageProfile are entirely undocumented, so the description fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource ('Read scoped verified event attestations') and bounds scope with 'no publication authority,' which the agent cannot get from the name alone. It also identifies itself as a 'Deprecated alias for get_world_activation_evidence,' differentiating it from that sibling.

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 'Deprecated alias' label implies the canonical tool should be preferred, giving implicit routing guidance, but there is no explicit 'use get_world_activation_evidence instead' instruction or condition. No when-not or prerequisite context for approval/activation workflows is provided.

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

leanriq_get_world_intelligenceGet the latest advertiser World Intelligence summary. It is fresh, source-backed context that may be partial; opportunities are recommendations and this never publishes creative. (deprecated alias)B
Read-onlyIdempotent
Inspect

Get the latest advertiser World Intelligence summary. It is fresh, source-backed context that may be partial; opportunities are recommendations and this never publishes creative.. Deprecated alias for get_world_intelligence. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds real beyond-annotation context: the data is "fresh, source-backed… may be partial," opportunities are only recommendations, and the call "never publishes creative," plus synchronous execution and forbidden task support.

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

Conciseness3/5

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

The first two sentences duplicate the title verbatim and add a double period, while the classification/execution/task-support lines restate what annotations already provide. The orchestration/presentation block is long and only tangentially about invoking the tool, so several sentences compete for attention before the key deprecation fact.

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?

An output schema exists, so return values needn't be explained, and the presentation guidance is a genuine addition. However, for a 15-parameter call with nested objects and zero schema documentation, the description leaves the entire input contract unspecified, which is a substantial completeness gap.

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?

Fifteen parameters with 0% schema description coverage, and the description says nothing about any of them — no meaning for seatId, advertiserId, targetMarket, or the many locale/market fields. At 0% coverage the description carries the full burden for input semantics and does not discharge it.

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

Purpose4/5

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

The description states a specific verb and resource ("Get the latest advertiser World Intelligence summary") and explicitly identifies itself as a "Deprecated alias for get_world_intelligence," which routes the agent to the canonical sibling. It is clear what the tool returns, though the deprecated status is buried after a verbatim repeat of the title.

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 "deprecated alias" statement strongly signals not to prefer this tool over get_world_intelligence, and the closing guidance tells the agent to lead with assistantSummary and avoid dumping raw JSON. It stops short of an explicit "use get_world_intelligence instead when…" rule, so nothing is quite airtight.

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

leanriq_get_world_opportunityGet one active or historical World Intelligence opportunity and its compact provenance in the selected advertiser scope. It does not publish creative. (deprecated alias)A
Read-onlyIdempotent
Inspect

Get one active or historical World Intelligence opportunity and its compact provenance in the selected advertiser scope. It does not publish creative.. Deprecated alias for get_world_opportunity. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdYes
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, non-destructive and closed-world, and the description repeats 'Classification: read-only' plus adds useful non-schema traits (synchronous execution, task support forbidden). It goes further than most by specifying response-handling behaviour (assistantSummary first, never expose raw JSON), which is genuinely actionable agent guidance.

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?

Purpose is front-loaded and the orchestration guidance is useful, but the description duplicates the title verbatim (including the stray double period) before getting to new information, which wastes the most valuable opening space.

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?

An output schema exists so return values need not be explained, and the deprecation routing is covered. However, for a 16-parameter tool with 0% schema coverage and no parameter narrative, the definition is incomplete for correct invocation — an agent cannot tell which optional scope fields matter or how they interact.

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 0% across 16 parameters, and the description contributes nothing about any of them beyond a vague 'advertiser scope'. Only opportunityId is required, yet the description never names it or explains the relationship among seatId, advertiserId, locale and market fields. With this many undocumented knobs, the definition does not compensate for the schema 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?

States a specific verb and resource ('Get one ... World Intelligence opportunity and its compact provenance') plus scope ('selected advertiser scope') and a negative boundary ('does not publish creative'). It also explicitly identifies itself as the deprecated alias of get_world_opportunity, letting an agent distinguish it from both get_world_opportunity and list_world_opportunities.

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 'Deprecated alias for get_world_opportunity' statement is strong routing guidance, and the scope constraint ('in the selected advertiser scope') is clear. It lacks any explicit when-not-to-use or prerequisite statement, so it stops short of full alternative routing.

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

leanriq_get_world_research_decisionRead advertiser-scoped World Intelligence V3 decision with evidence; no publication authority. (deprecated alias)B
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 decision with evidence; no publication authority.. Deprecated alias for get_world_research_decision. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, so the bar is lower; the description still adds real context such as 'synchronous' execution, 'task support: forbidden', and 'no publication authority', plus explicit output-handling rules (use assistantSummary first, never dump raw JSON, mention IDs only when useful). This is meaningful behavioral guidance beyond the structured fields.

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

Conciseness2/5

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

The opening sentence duplicates the title verbatim, and 'Classification: read-only. Execution: synchronous. Task support: forbidden.' restates annotation-covered facts. The single most useful piece of routing information ('deprecated alias') is buried in the middle rather than front-loaded, and the response-style rules sprawl across multiple sentences.

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?

An output schema exists, so return values need not be explained and the output-presentation guidance is a bonus. But for a tool with 20 inputs, 0 required, nested objects, and 0% parameter documentation, the description provides no help on how to actually populate the call, which is the largest completeness gap.

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?

Twenty parameters with 0% schema description coverage and no enums, yet the description names none of them and explains no semantics, formats, or required combinations. 'Advertiser-scoped' and the mention of IDs are the only faint hints (advertiserId, entity/eventId/opportunityId), which is far from compensating for the coverage gap.

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

Purpose4/5

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

The description states a specific verb+resource ('Read advertiser-scoped World Intelligence V3 decision with evidence') and explicitly identifies itself as a deprecated alias for get_world_research_decision, which differentiates it from the many sibling get_world_research_* tools. The only weakness is that the same sentence is duplicated verbatim from the title, adding no new information.

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?

Calling itself a 'deprecated alias for get_world_research_decision' implicitly routes the agent toward the canonical sibling, which is useful. However, it never states an explicit rule ('use get_world_research_decision instead' or 'only retained for backward compatibility'), and it gives no guidance on when this tool should ever be chosen over its canonical counterpart.

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

leanriq_get_world_research_eventRead advertiser-scoped World Intelligence V3 event with evidence; no publication authority. (deprecated alias)C
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 event with evidence; no publication authority.. Deprecated alias for get_world_research_event. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds that it is a deprecated alias and classifies it as read-only/synchronous/forbidden for task support, which is marginally useful, but it does not explain what 'evidence' is returned, whether the deprecated alias behaves identically, or any rate or auth constraints.

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

Conciseness3/5

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

The first clause is front-loaded and clear, but the description then pivots into orchestration/display instructions ('Never display raw JSON...', 'Mention IDs only when useful...') that are generic presentation policy rather than tool-specific guidance. It is moderately sized but mixes purpose with output-formatting policy.

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 has an output schema, so return values need not be explained, and annotations cover safety. But with 0% parameter description coverage and 20 parameters, plus no clarification of how the deprecated alias differs from its replacement, the description leaves real gaps for an agent deciding whether and how to call it.

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

Parameters3/5

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

Schema description coverage is 0% across 20 parameters, which is a substantial documentation gap, but the description does not discuss any parameters at all. Baseline for a well-schematized tool would be 3; here the schema has types and constraints but no descriptions, and the description does not compensate, so it stays at 3 rather than rising.

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

Purpose3/5

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

The description states it reads a 'World Intelligence V3 event with evidence' and is 'advertiser-scoped', which is a specific resource, but it also explicitly declares itself a 'Deprecated alias for get_world_research_event' – so it does not tell the agent why it exists alongside its canonical sibling or when to prefer the non-deprecated tool. Among many get_world_research_* siblings, the distinction is only that this one is the deprecated alias.

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?

It says to use assistantSummary first and suggests a next LeanrIQ action, but there is no guidance on when to call this tool vs. get_world_research_event or the many other get_world_research_* siblings. No prerequisites, no exclusions, no alternatives named.

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

leanriq_get_world_research_eventsRead advertiser-scoped World Intelligence V3 events with evidence; no publication authority. (deprecated alias)B
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 events with evidence; no publication authority.. Deprecated alias for get_world_research_events. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely new behavioral context: 'no publication authority', synchronous execution, 'Task support: forbidden', and detailed response-handling rules (use assistantSummary first, never surface raw JSON, mention IDs only when useful). That is meaningful disclosure beyond the annotations, though it says nothing about pagination or failure modes.

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

Conciseness3/5

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

The purpose and deprecation signal are front-loaded, and the response-format instructions are useful, but the first sentence duplicates the title verbatim and even carries a doubled period ('authority..'), a clear redundancy. The block of output-style directives is long for what it conveys, so structure is adequate but imperfect.

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?

An output schema exists, so return values need not be explained, and the behavioral guidance is solid. But for a tool with 20 undocumented parameters, nested objects, and 0% schema coverage, the description leaves an agent with almost no information on how to construct a valid call, which is a major completeness gap.

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?

There are 20 parameters with 0% schema description coverage, including nested objects like marketContext and marketLanguageProfile, and the description does not mention a single parameter, its meaning, or how entity/seatId/advertiserId/targetMarket relate. With no schema coverage to lean on, the description fully fails to compensate.

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

Purpose4/5

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

States a specific verb and resource ('Read advertiser-scoped World Intelligence V3 events with evidence') and explicitly labels itself a deprecated alias for get_world_research_events, which distinguishes it from the canonical sibling. The scope qualifier 'no publication authority' further narrows the purpose. It falls short of 5 because the opening sentence merely restates the title verbatim rather than adding independent information.

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 'Deprecated alias for get_world_research_events' note implies an agent should prefer the canonical tool, and 'no publication authority' signals a usage boundary. However, there is no explicit statement of when to call this alias versus get_world_research_events, nor any prerequisite context, so the guidance is implied rather than stated.

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

leanriq_get_world_research_insightsRead advertiser-scoped World Intelligence V3 insights with evidence; no publication authority. (deprecated alias)C
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 insights with evidence; no publication authority.. Deprecated alias for get_world_research_insights. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), yet the description adds genuinely new behavior: synchronous execution, task support forbidden, and explicit result-handling rules (use assistantSummary first, never surface raw JSON, mention IDs only for debugging). It correctly aligns with the readOnly annotation rather than contradicting 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?

Purpose and deprecation status are front-loaded, but the lead sentence repeats the title verbatim (including a stray double period), and the resulting block mixes identity, execution metadata, and a long style guide. Useful content is present but padded.

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

Completeness2/5

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

An output schema exists, so return values need not be re-explained, and the read-only/synchronous behavior is covered. But for a 20-parameter tool with zero schema documentation, the description leaves the caller unable to determine what any input means or which combinations are meaningful, which is a substantial completeness gap.

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

Parameters2/5

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

The schema has 20 properties with 0% description coverage, so the description carries the full burden — and it adds essentially nothing about parameters. It implies advertiser scoping (loosely mapping to advertiserId) but never explains entity, eventId, question, limit, locale fields, or the nested marketContext/marketLanguageProfile objects.

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

Purpose3/5

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

The description states a concrete verb+resource (reads advertiser-scoped World Intelligence V3 insights) and scope, and labels itself a deprecated alias. However, it never tells the agent that the non-prefixed get_world_research_insights exists or which one to prefer, so differentiation from the sibling alias is left to inference. The opening sentence is also a verbatim duplicate of the title.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance. Marking itself 'deprecated alias' implies the agent should route elsewhere, but no replacement tool or condition is named. The bulk of the text is output-formatting policy, not selection guidance.

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

leanriq_get_world_research_mentionsRead advertiser-scoped World Intelligence V3 mentions with evidence; no publication authority. (deprecated alias)A
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 mentions with evidence; no publication authority.. Deprecated alias for get_world_research_mentions. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, but the description adds synchronous execution, forbidden task support, no publication authority, and concrete output-handling rules: use assistantSummary first, do not show raw JSON, and mention IDs only when useful. 'Classification: read-only' repeats the annotation, but the operational context goes beyond structured fields.

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 purpose and deprecation status are front-loaded, and the operational sentences are terse and useful for an orchestrator. There is minor redundancy between the title, description, and annotations around read-only classification, but the text is not bloated.

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?

An output schema exists, so return values need less explanation, and annotations carry the safety profile. However, for a 20-parameter input schema with no parameter descriptions, the description completely omits input semantics, leaving an agent unable to know how to scope or filter mentions correctly.

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

Parameters1/5

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

The schema has 20 parameters with 0% description coverage, and the description provides no parameter-level meaning for limit, entity, seatId, advertiserId, locale fields, market context, or any other input. 'Advertiser-scoped' faintly hints at advertiserId, but this is nowhere near sufficient for correct invocation.

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?

It states a specific verb, resource, scope, and qualifier: read advertiser-scoped World Intelligence V3 mentions with evidence. It also explicitly names the canonical sibling get_world_research_mentions and labels itself a deprecated alias, so an agent can distinguish it from other world-research tools without opening a schema.

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 deprecation note and the named replacement get_world_research_mentions give clear usage steering, and 'no publication authority' sets a read-only boundary. However, it does not explicitly state when this alias is still appropriate or how to choose between it and related tools such as get_world_research_insights.

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

leanriq_get_world_research_profileRead advertiser-scoped World Intelligence V3 profile with evidence; no publication authority. (deprecated alias)A
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 profile with evidence; no publication authority.. Deprecated alias for get_world_research_profile. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds real behavioral context beyond them: synchronous execution, 'no publication authority', that the payload is internal orchestration state, and explicit output-handling rules (use assistantSummary, never surface raw JSON unless asked). This is genuinely useful context not present in annotations.

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

Conciseness3/5

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

The opening sentence duplicates the title verbatim, and the boilerplate lines ('Classification: read-only. Execution: synchronous. Task support: forbidden.') restate what annotations already convey, adding noise. The remaining output-handling guidance is useful and reasonably front-loaded, but the entry is longer than it needs to 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?

The presence of an output schema means return values need no explanation, and the description covers usage and output handling well. However, for a 20-parameter tool with 0% schema description coverage, the definition leaves the agent without the parameter semantics needed to invoke it correctly, which is a substantial completeness gap.

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 0% across 20 parameters, and the description explains none of them. 'Advertiser-scoped' weakly hints at advertiserId and 'with evidence' hints at evidence-related fields, but the vast majority of parameters (entity, question, targetMarkets, locale fields, nested marketContext, etc.) receive no semantic guidance in either place.

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

Purpose4/5

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

The description names a specific verb and resource ('Read advertiser-scoped World Intelligence V3 profile with evidence') and explicitly identifies itself as a deprecated alias for get_world_research_profile, which distinguishes it from that sibling. It falls short of 5 because it does not differentiate scope against the other get_world_research_* siblings (event, insights, summary, etc.).

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 deprecation note ('Deprecated alias for get_world_research_profile') is a strong routing signal that steers an agent toward the canonical tool, and 'no publication authority' clarifies the read boundary. There is no explicit when-not guidance versus the broader set of world research siblings, so it stops short of 5.

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

leanriq_get_world_research_proposalRead advertiser-scoped World Intelligence V3 proposal with evidence; no publication authority. (deprecated alias)C
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 proposal with evidence; no publication authority.. Deprecated alias for get_world_research_proposal. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnly/idempotent/non-destructive/non-open-world, and the description's 'Classification: read-only' largely restates that. It does add genuinely new facts ('synchronous', 'task support: forbidden', and that the payload is internal application state consumed by orchestration), which is real value, but omits anything about the returned data's structure or freshness.

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

Conciseness2/5

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

The description opens by duplicating the title almost verbatim (including a double period), then buries the key 'deprecated alias' fact in the second sentence. The trailing response-formatting prescription is long and generic, and the most decision-relevant information is not front-loaded.

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?

An output schema exists so return values need not be described, and annotations cover the safety profile. But for a 20-parameter, zero-required read tool with 0% parameter coverage, the description leaves an agent with no idea what most fields mean, what a minimal valid call looks like, or which selectors are needed to scope to an advertiser.

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?

There are 20 parameters with 0% schema description coverage, and the description explains none of them — not even the identity selectors (advertiserId, eventId, opportunityId, seatId) or the many locale/market fields. The description does no work to compensate for an entirely undocumented parameter surface.

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

Purpose4/5

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

States a specific verb and resource ('Read advertiser-scoped World Intelligence V3 proposal with evidence') and explicitly labels itself a deprecated alias for get_world_research_proposal, so an agent can distinguish it from that canonical sibling. However, the leading sentence merely duplicates the title, and it never states which of the two the agent should actually prefer beyond the 'deprecated' label.

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?

Calling itself a 'deprecated alias' implies the canonical get_world_research_proposal should be used instead, which is useful context, but this is left implicit rather than stated as an instruction. There is no explicit when-to-use/when-not-to-use rule, and most of the text is response-formatting boilerplate rather than selection guidance.

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

leanriq_get_world_research_questionRead advertiser-scoped World Intelligence V3 question with evidence; no publication authority. (deprecated alias)B
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 question with evidence; no publication authority.. Deprecated alias for get_world_research_question. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so 'Classification: read-only' largely repeats them. The description nevertheless adds context beyond the annotations: synchronous execution, task support forbidden, and substantial output-handling behavior (JSON is internal application state, use assistantSummary first, never display raw JSON, mention IDs only when useful).

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

Conciseness3/5

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

The definition opens with a verbatim duplication of the title, then the deprecation note, then execution metadata, then a long run-on block of output-presentation rules. The deprecation note and output guidance earn their place, but the front-loaded repetition and density of boilerplate reduce clarity.

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?

Because an output schema exists, return values need not be explained, and the description covers output handling reasonably well. But for a 20-parameter tool, it says nothing about how any parameter should be supplied, which is a serious completeness gap despite the read-only, deprecated nature of the tool.

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

Parameters2/5

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

There are 20 parameters with 0% schema description coverage, so the description is the only place parameter meaning could be supplied - and it provides none. Candidates like advertiserId, question, seatId, targetMarkets, and marketContext are left entirely to the reader. The schema's types and constraints give minimal footing, but the description adds no semantic value.

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 first sentence states a specific verb+resource ('Read advertiser-scoped World Intelligence V3 question with evidence') and a boundary ('no publication authority'). It also identifies itself as a deprecated alias for get_world_research_question, which helps separate it from that sibling. It stops short of 5 because 'question with evidence' remains somewhat abstract.

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?

Naming the tool a 'Deprecated alias for get_world_research_question' implicitly steers an agent toward the non-deprecated sibling, which is the most important consumption guidance here. However, there is no explicit when-to-use / when-not-to-use statement or a direct instruction to prefer the canonical tool. Usage is only implied.

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

leanriq_get_world_research_summaryRead advertiser-scoped World Intelligence V3 summary with evidence; no publication authority. (deprecated alias)B
Read-onlyIdempotent
Inspect

Read advertiser-scoped World Intelligence V3 summary with evidence; no publication authority.. Deprecated alias for get_world_research_summary. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
entityNo
seatIdNo
eventIdNo
questionNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), but the description adds real value beyond them: synchronous execution, task support forbidden, and explicit output-handling rules (use assistantSummary first, never display raw JSON, mention IDs only when useful). These are behavioral constraints an agent could not derive from the structured fields alone.

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

Conciseness3/5

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

The deprecation notice and the output-handling guidance earn their place, but the first sentence duplicates the title word-for-word (including a doubled period), and the classification/execution/task-support lines are boilerplate. Front-loading the deprecation notice would have been stronger than burying it after the repeated title.

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?

An output schema exists, so return values need not be described, and annotations cover safety, which lowers the bar. Still, for a tool with 20 undocumented parameters and a dense sibling set, the description does not convey what the summary actually contains or how the entity/question inputs shape it, leaving an agent able to invoke it but not to invoke it well.

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?

There are 20 parameters with 0% schema description coverage and no enums, so the description carries the full burden of explaining them — and it explains none of them. Fields like entity, question, targetMarket, marketContext, and the locale variants are completely opaque from both the schema and the description.

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

Purpose4/5

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

The description states a specific verb and resource (read an advertiser-scoped World Intelligence V3 summary with evidence) and explicitly identifies itself as the deprecated alias of get_world_research_summary, which is genuine differentiation from the dense cluster of sibling get_world_research_* tools. The opening sentence is largely a verbatim restatement of the title, so it earns clarity mainly through the deprecation note rather than original content.

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?

Labeling itself a 'Deprecated alias for get_world_research_summary' implicitly steers the agent toward the canonical tool, and 'no publication authority' hints at scope limits. However, there is no explicit when-to-use / when-not-to-use statement relative to the many nearby siblings (get_world_intelligence, get_world_research_insights, get_world_research_decision), leaving the routing decision to inference.

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

leanriq_launch_creative_campaignLeanrIQ Creative Runtime: Default preview mode works without Studio and stores research, briefs, builds, QA, and previews in a LeanrIQ workspace. collaborate keeps proposals non-destructive; operate deliberately creates Studio work. Publish is never inferred: traffic_ready and publish remain explicit governed Studio actions. (deprecated alias)A
Idempotent
Inspect

LeanrIQ Creative Runtime: Default preview mode works without Studio and stores research, briefs, builds, QA, and previews in a LeanrIQ workspace. collaborate keeps proposals non-destructive; operate deliberately creates Studio work. Publish is never inferred: traffic_ready and publish remain explicit governed Studio actions.. Deprecated alias for launch_creative_campaign. Classification: writes to Studio, creates billable AI usage, publishes externally. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
KPINo
ctaNo
toneNo
brandNo
forceNo
offerNo
budgetNo
seatIdNo
channelNo
endDateNo
productNo
audienceNo
elementsNo
flightIdNo
headlineNo
platformNo
seatNameNo
verticalNo
accountIdNo
mustAvoidNo
objectiveYes
skippableNo
startDateNo
approvalIdNo
campaignIdNo
flightNameNo
constraintsNo
creativeIdsNo
destinationNo
funnelStageNo
mustIncludeNo
persistenceNo
targetSizesNo
workspaceIdNo
advertiserIdNo
campaignNameNo
deliverablesNo
saveToStudioNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
executionModeNopreview
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
landingPageUrlNo
sourceAssetIdsNo
supportingCopyNo
thirdPartyTagsNo
durationSecondsNo
revisionRequestNo
workspaceSourceNo
performanceEvidenceNo
defaultContentLocaleNo
sourceFrameImageUrlsNo
workspaceAccessTokenNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
createCampaignIfMissingNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.9/5.0
Behavior5/5

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

Beyond the annotations (which only give readOnly=false, idempotent=true, destructive=false, openWorld=true), the description discloses billable AI usage, external publishing, synchronous execution, forbidden task support, mutation modes (validate_only/preview_only/execute), and a partial-failure policy of completed_items_not_rolled_back. It also explains idempotency-key derivation and the hard requirement to pass seatId/seatName on the exact call when multiple seats are authorized.

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

Conciseness2/5

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

The description repeats the long title verbatim before adding any new information, and the most important fact (deprecated alias) is not front-loaded. The bulk of the length is duplicated text rather than earned content, hurting scanability for an agent trying to pick a tool quickly.

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?

An output schema exists, so return values need not be explained, and the description richly covers governance, safety, idempotency, and seat requirements appropriate to a high-stakes mutation. The remaining gap is parameter-level completeness for a 63-field schema, but the behavioral coverage is strong enough that an agent can call it correctly on the important dimensions.

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% across 63 parameters, so the schema carries almost no param meaning. The description compensates only for a few critical ones (idempotencyKey, seatId/seatName, executionMode/persistence semantics); the large majority of parameters remain undocumented, so it does not fully cover the gap but adds meaningful context on the fields that matter most.

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

Purpose4/5

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

The description states a concrete verb+resource (launch a creative campaign, default preview mode, stores research/briefs/builds/QA/previews in a workspace) and explicitly identifies itself as a 'Deprecated alias for launch_creative_campaign,' which distinguishes it from the canonical sibling. Purpose is clear, though it is buried under repeated title text rather than stated up front.

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

Usage Guidelines4/5

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

It gives real guidance on mode selection: default preview works without Studio, 'collaborate keeps proposals non-destructive,' 'operate deliberately creates Studio work,' and 'Publish is never inferred' so traffic_ready/publish must be explicit. It also states seat and idempotency requirements for mutation. It does not explicitly say when to prefer this tool over the canonical launch_creative_campaign, leaving the deprecated-alias choice to inference.

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

leanriq_list_world_opportunitiesList active World Intelligence creative opportunities for one authorised advertiser. Opportunities are human-review recommendations and never publish creative. (deprecated alias)A
Read-onlyIdempotent
Inspect

List active World Intelligence creative opportunities for one authorised advertiser. Opportunities are human-review recommendations and never publish creative.. Deprecated alias for list_world_opportunities. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
seatIdNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, and the description reinforces this with 'read-only', 'synchronous', and 'task support: forbidden'. It also adds genuinely useful response-handling rules (use assistantSummary first, never dump raw JSON, mention IDs sparingly) that annotations do not cover.

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

Conciseness3/5

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

The opening sentence duplicates the title verbatim (including a stray '..'), and the title restates it a third time, so the definition is front-loaded with redundancy. The behavioral/formatting guidance that follows does earn its place, but the payload is padded.

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?

An output schema exists, so return values need not be explained, and the response-presentation rules are a nice addition. The definition is nonetheless incomplete for a 16-parameter filtering tool, leaving the agent with no guidance on which filters to combine or what the defaults imply.

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?

Sixteen parameters with 0% schema description coverage, no enums, and nested objects like marketContext and marketLanguageProfile — yet the description explains none of them, not even the limit/seatId/advertiserId scoping or how targetMarkets interacts with marketContext. This is a significant gap the description should have compensated for.

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

Purpose5/5

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

States a specific verb and resource ('List active World Intelligence creative opportunities for one authorised advertiser'), bounds the scope with 'active' and 'one authorised advertiser', and explicitly names itself as a deprecated alias for list_world_opportunities, so an agent can route to the canonical 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 deprecation note implicitly tells the agent to prefer list_world_opportunities, which is real routing guidance. However, it never states when calling this alias is actually acceptable (e.g., backward compatibility only), so it falls short of explicit when/when-not guidance.

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

leanriq_list_world_signalsList active, source-provenanced World Intelligence signals for one authorised advertiser. This is current contextual intelligence, not a general-purpose news search. (deprecated alias)B
Read-onlyIdempotent
Inspect

List active, source-provenanced World Intelligence signals for one authorised advertiser. This is current contextual intelligence, not a general-purpose news search.. Deprecated alias for list_world_signals. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
seatIdNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, and the description does not contradict them. Beyond that, it adds genuinely useful context: synchronous execution, task support forbidden, and response-handling rules (use assistantSummary first, never display raw JSON, mention IDs sparingly). This is meaningful behavioral guidance not available in 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.

Conciseness3/5

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

The purpose is front-loaded, but the title sentence is repeated verbatim with a doubled period, and a large block of generic orchestration boilerplate (JSON display policy, next-action suggestion) is appended that applies to many LeanrIQ tools rather than this one specifically. Usable but not tight.

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?

An output schema exists, so return values need not be explained, and the response-handling rules are covered. However, for a 16-parameter tool with nested objects and zero schema description coverage, the description leaves the entire input surface undocumented. Combined with the deprecation notice lacking explicit migration direction, the definition is incomplete for an agent trying to invoke it correctly.

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

Parameters1/5

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

The tool has 16 parameters including nested objects (marketContext, marketLanguageProfile) with 0% schema description coverage and no enums, and the description says nothing about any of them. It neither explains limit, seat/advertiser identifiers, nor the locale/market fields. The description fails to compensate for a total schema documentation gap on a high-parameter tool.

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

Purpose4/5

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

The description states a specific verb and resource: list active, source-provenanced World Intelligence signals for one authorised advertiser, and distinguishes it from a general news search. It also flags that this is a deprecated alias for list_world_signals, which is a useful routing signal. The purpose is clear, though the duplicate title sentence adds noise rather than precision.

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

Usage Guidelines4/5

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

It gives a clear negative bound ('not a general-purpose news search') and, via 'Deprecated alias for list_world_signals', effectively steers the agent to the canonical sibling. It does not explicitly say 'prefer list_world_signals', but the deprecation notice is close to that. No further prerequisites or exclusion conditions are given.

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

leanriq_qa_creativeQA a creative for launch readiness with actionable issues, certification evidence, and next steps before preview, revision, or trafficking. (deprecated alias)A
Idempotent
Inspect

QA a creative for launch readiness with actionable issues, certification evidence, and next steps before preview, revision, or trafficking.. Deprecated alias for qa_creative. Classification: creates billable AI usage. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work.

NameRequiredDescriptionDefault
brandYes
rulesNo
formatYes
seatIdNo
contextNo
creativeYes
seatNameNo
objectiveYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.6/5.0
Behavior5/5

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

With annotations already covering readOnly/destructive/idempotent, the description goes well beyond them: it discloses that the call creates billable AI usage, runs synchronously, forbids task support, exposes validate_only/preview_only/execute mutation modes, uses a completed_items_not_rolled_back partial failure policy, and explains that an omitted idempotencyKey still yields a deterministic retry key. It also tells the agent how to present results (assistantSummary first, no raw JSON). This is unusually rich behavioral context.

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

Conciseness2/5

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

The first sentence is a verbatim restatement of the title, and a large fraction of the text is generic server-wide orchestration boilerplate about JSON display and summarization rather than anything specific to this tool. The deprecation fact, which is the one thing an agent most needs, is buried in sentence two behind duplicated content.

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?

An output schema exists, so return-value explanation is not required, and the description compensates with strong execution/mutation/presentation guidance. However, for a 20-parameter mutation tool with zero schema description coverage, leaving every business parameter undocumented is a real completeness gap, and the reference to idempotencyKey (absent from the schema) adds ambiguity.

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?

Twenty parameters at 0% schema description coverage means the description carries the full burden, and it does not pay it: brand, format, objective, the nested creative object, targetMarkets, and the entire locale family are never explained. Worse, it discusses an idempotencyKey parameter that does not appear in the schema at all, and mutation modes that no property exposes, so its only parameter-adjacent content is misaligned with the actual input contract.

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

Purpose4/5

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

The description names a specific operation (QA a creative for launch readiness) and states plainly that this is a 'Deprecated alias for qa_creative', which is the single most important differentiation fact against the large sibling set. It stops short of a direct imperative ('use qa_creative instead'), but the resource, verb, and relationship to the canonical tool are all recoverable.

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

Usage Guidelines4/5

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

It gives both the workflow position ('before preview, revision, or trafficking') and the routing signal ('Deprecated alias for qa_creative'), so an agent can tell where QA sits in the chain and that the canonical entry point is elsewhere. There is no explicit exclusion sentence telling the agent not to call this one, which keeps it out of 5 territory.

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

leanriq_recommend_workflowRecommend the shortest LeanrIQ workflowA
Read-onlyIdempotent
Inspect

Purpose: choose the shortest safe LeanrIQ creative/adtech workflow when the caller is unsure which capability to use. Use only for ambiguous requests; do not call this before every LeanrIQ action. Output: one outcome journey, preferred capability, minimal call plan, completion evidence and approval boundary. Read-only and non-mutating. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
intentYes
knownIdsNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior; the description reinforces this and adds useful context beyond structured data: the returned JSON is internal application state, raw JSON should not be displayed unless explicitly requested, and assistantSummary should be used first. This helps the agent handle the output correctly.

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

Conciseness4/5

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

The description is a single dense paragraph with the most important usage information front-loaded. Sentences about output and JSON handling are relevant but slightly verbose; some redundancy with annotations (e.g., 'Read-only and non-mutating') exists, but overall the structure is efficient.

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

Completeness3/5

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

The description covers purpose, usage boundaries, output components, and output-handling rules, and an output schema exists. However, the parameter semantics gap is significant for a tool with a nested object input and a required 'intent' string; the agent still lacks enough detail to use the options correctly.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not explain the 'intent' or 'knownIds' parameters. The purpose gives a rough clue that 'intent' is the ambiguous request, but 'knownIds' (and its nested fields) is entirely unexplained, so the agent cannot know how to populate or use the optional identifiers.

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 opens with a specific, actionable purpose: 'choose the shortest safe LeanrIQ creative/adtech workflow when the caller is unsure which capability to use.' This clearly distinguishes the tool from the many direct action siblings by scoping it to ambiguous capability-selection requests and emphasizing 'shortest safe' workflow selection.

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 says 'Use only for ambiguous requests; do not call this before every LeanrIQ action,' providing both when and when-not to use the tool. It stops short of naming specific alternative sibling tools, so it misses the full 'alternatives' bar for a 5.

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

leanriq_record_world_research_feedbackRecord reviewed relevance or decision feedback without changing approval or safety constraints. (deprecated alias)C
Idempotent
Inspect

Record reviewed relevance or decision feedback without changing approval or safety constraints.. Deprecated alias for record_world_research_feedback. Classification: read-only. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
reasonNo
seatIdNo
eventIdYes
outcomeYes
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.6/5.0
Behavior1/5

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

The description asserts 'Classification: read-only' while the annotations declare readOnlyHint=false, and the same text elsewhere discusses 'Mutation modes: validate_only, preview_only, execute' and 'if idempotencyKey is omitted on a mutation'. The safety classification is self-contradictory and contradicts the structured annotations, which is exactly the kind of inconsistency an agent cannot resolve on its own.

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?

Purpose and deprecation status are front-loaded, which is good, but the body is largely generic orchestration boilerplate (JSON handling, tone guidance, next-action suggestions) that is not specific to this tool and crowds out parameter detail. The repeated period after 'constraints..' also signals assembled text rather than authored text.

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?

An output schema exists so return values need not be documented, but for an 18-parameter tool with 0% schema coverage the description supplies almost no field-level guidance, and its read-only claim conflicts with the mutation-oriented annotations. An agent would be uncertain both about safety and about how to populate most arguments.

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 0% across 18 parameters, so the schema supplies no meaning and the description must compensate. It only touches seatId/seatName (multi-seat writes) and the non-schema concept of idempotencyKey, leaving the required eventId/outcome and the large locale/market/targeting parameter family completely unexplained.

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 opening sentence states a specific verb and resource ('record reviewed relevance or decision feedback') and the second explicitly identifies the tool as a deprecated alias of the sibling record_world_research_feedback, which is also present in the tool list. That lets an agent place it relative to its sibling, though it does not say what differs (if anything) in behavior beyond the alias relationship.

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?

Marking the tool as a 'deprecated alias' implies the agent should generally prefer record_world_research_feedback, and the note that seatId/seatName must be supplied on the exact call is concrete usage guidance. However, the deprecation is never turned into an explicit 'use X instead' instruction, so the routing decision is left to inference.

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

leanriq_resolve_or_provision_advertiserresolve or provision advertiser (deprecated alias)B
Idempotent
Inspect

resolve or provision advertiser. Deprecated alias for resolve_or_provision_advertiser. Classification: writes to Studio. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
brandNo
dryRunNo
seatIdNo
billingNo
sandboxNo
operatorNo
seatNameNo
accountIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
createIfMissingNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.1/5.0
Behavior4/5

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

Beyond the annotations (which already declare non-readOnly, idempotent, non-destructive), the description adds substantial behavioral context: 'writes to Studio', synchronous execution, task support forbidden, three mutation modes, and a 'completed_items_not_rolled_back' partial-failure policy. It also explains deterministic idempotencyKey derivation and the requirement to pass seatId/seatName on the exact call for writes when multiple seats are authorised. This is meaningful disclosure not derivable from structured fields.

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

Conciseness3/5

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

The purpose and deprecation are front-loaded, and the mutation/seat/idempotency sentences earn their place. However, a large trailing block of response-formatting boilerplate (assistantSummary, 'never display raw JSON', 'mention IDs only when useful') is generic orchestration guidance that pads the definition. Adequately structured but bloated.

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 is strong on mutation behavior, seat authorization, and idempotency, and an output schema exists so return values needn't be explained. But for a 23-parameter write tool with 0% schema coverage, the parameter space is largely unaddressed, leaving the agent without guidance on most inputs. Behaviorally complete, parametrically incomplete.

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 0% across 23 parameters with none required, so the description carries the full burden — yet it only explains idempotencyKey derivation and the seatId/seatName write requirement. The large majority of parameters (brand, billing, targetMarkets, marketContext, createIfMissing, etc.) receive no semantic explanation in either the schema or the description, so it fails to compensate for the coverage gap.

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

Purpose3/5

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

The first sentence 'resolve or provision advertiser' essentially restates the tool name/title, adding no independent description of the operation. The genuinely informative part is the deprecation notice pointing to a canonical 'resolve_or_provision_advertiser', which is useful but is metadata rather than purpose. It doesn't differentiate the tool from siblings like create_advertiser, get_advertiser, or update_advertiser, so it lands at vague-purpose level.

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 'Deprecated alias' note is a real usage signal (prefer the canonical tool), and it specifies the seat requirement for writes and mutation modes. However, it never explicitly states when to use this versus create_advertiser or get_advertiser, and the canonical name it defers to isn't in the sibling list. Usage is implied rather than spelled out.

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

leanriq_run_creative_chainrun creative chain (deprecated alias)B
Idempotent
Inspect

run creative chain. Deprecated alias for run_creative_chain. Classification: writes to Studio, creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
KPINo
goalNo
toneNo
brandNo
forceNo
offerNo
budgetNo
seatIdNo
channelNo
endDateNo
productNo
audienceNo
buildAdsNo
seatNameNo
accountIdNo
mustAvoidNo
objectiveNo
startDateNo
campaignIdNo
creativeIdNo
constraintsNo
creativeIdsNo
funnelStageNo
mustIncludeNo
targetSizesNo
advertiserIdNo
campaignNameNo
deliverablesNo
saveToStudioNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.3/5.0
Behavior5/5

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

Goes well past the annotations: it discloses that the call writes to Studio and creates billable AI usage, that execution is durable, the three mutation modes (validate_only, preview_only, execute), the partial-failure policy (completed_items_not_rolled_back), and the seatId/seatName requirement for multi-seat writes. This is exactly the behavioral context annotations cannot carry.

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?

Front-loaded correctly with purpose and deprecation, then dense behavioral facts. But the closing block on user-facing presentation (assistantSummary, raw JSON, ID disclosure, tone) is generic response-styling boilerplate that is long relative to the tool-specific content.

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 42-param mutation with an output schema present, the description covers mutation modes, durability, idempotency and seat authorization well. It remains incomplete on what the chain actually generates and on the semantics of nearly all input parameters, which is a significant gap given the tool's complexity.

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 0% across 42 parameters, so the description carries the full burden. It only illuminates idempotencyKey (derived retry key) and seatId/seatName (required on multi-seat writes); the remaining 40 domain parameters (KPI, goal, audience, brand, marketing context, locale fields, etc.) get no meaning at all.

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

Purpose3/5

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

"run creative chain. Deprecated alias for run_creative_chain." restates the tool name and identifies the canonical tool it aliases. The deprecation/alias relationship is genuinely useful, but the description never says what running a creative chain actually produces or does, so purpose is only partially clarified.

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?

Calling it a "Deprecated alias" strongly implies the agent should prefer run_creative_chain, which is implicit routing guidance. However, it never says so explicitly, nor does it say when this alias should ever still be used (e.g., backward compatibility only).

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

leanriq_run_creative_intelligenceSynthesize grounded, deduplicated advertiser creative opportunities from automatic competitor/category research and broad World signals. Returns a durable run ID and honest partial states; creates no campaign or publication. (deprecated alias)A
Idempotent
Inspect

Synthesize grounded, deduplicated advertiser creative opportunities from automatic competitor/category research and broad World signals. Returns a durable run ID and honest partial states; creates no campaign or publication.. Deprecated alias for run_creative_intelligence. Classification: creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
advertiserIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A4/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing billable AI usage, durable execution, the partial failure policy (completed_items_not_rolled_back), available mutation modes, deterministic idempotency-key derivation, and the hard rule that seatId/seatName must be supplied on this exact call when multiple seats are authorised. These are exactly the operational traits an agent cannot infer from readOnlyHint/idempotentHint/destructiveHint alone.

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?

Purpose is front-loaded, but the opening duplicates the title verbatim (with a stray double period), and the response-styling guidance (assistantSummary, never display raw JSON, mention IDs sparingly) is generic boilerplate that dilutes the tool-specific content. Useful content is present but not tightly edited.

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 complex 16-parameter, nested-object mutation with an output schema, the description covers the critical operational facts: billing impact, durability, partial-failure semantics, seat and idempotency requirements. Return values need not be explained since an output schema exists. The remaining gap is field-level guidance for the many unexplained locale/market parameters.

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

Parameters3/5

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

Schema description coverage is 0% across 16 parameters, so the description must carry the burden, and it only explains idempotencyKey (auto-derived retry key) and seatId/seatName (mandatory on the call for multi-seat writes). It says nothing about advertiserId, targetMarkets, marketContext, or the several locale parameters, so most parameters remain undocumented in both places.

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

Purpose4/5

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

States a specific verb and resource: 'Synthesize grounded, deduplicated advertiser creative opportunities from automatic competitor/category research and broad World signals,' which an agent can distinguish from retrieval siblings like get_creative_intelligence. It also flags itself as a deprecated alias for run_creative_intelligence, which is a meaningful routing signal. The wording largely mirrors the title rather than expanding on it, but the purpose is unambiguous.

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

Usage Guidelines4/5

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

The deprecation notice ('Deprecated alias for run_creative_intelligence') tells the agent to prefer the non-alias sibling, and the explicit mutation modes (validate_only, preview_only, execute) give concrete invocation contexts. It does not state exclusions against other siblings (e.g. run_creative_chain) explicitly, so it stops short of full when/when-not guidance.

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

leanriq_run_world_intelligenceRun bounded, current World Intelligence for one authorised advertiser. It returns source-backed external context and creative opportunities; evidence may be partial and it never publishes or activates creative. (deprecated alias)A
Idempotent
Inspect

Run bounded, current World Intelligence for one authorised advertiser. It returns source-backed external context and creative opportunities; evidence may be partial and it never publishes or activates creative.. Deprecated alias for run_world_intelligence. Classification: creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: preserve_qualified_evidence_and_signals. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
policyNo
seatIdNo
routineNo
seatNameNo
routineIdNo
advertiserIdNo
forceRefreshNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
lookbackHoursNo
marketContextNo
targetMarketsNo
contentLocalesNo
advertiserContextNo
defaultContentLocaleNo
researchInstructionsNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=true) already signal a non-destructive, idempotent mutation, but the description adds material context beyond them: billable AI usage, durable execution, the validate_only/preview_only/execute mode set, the partial-failure policy, and how idempotencyKey is derived on omission. No contradiction with annotations; the only gap is that it doesn't define the concrete side effects of each mutation mode.

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?

Purpose and deprecation status are front-loaded, which is good, but the description is bloated: the opening sentence is duplicated verbatim from the title, and a large block of raw-JSON presentation boilerplate (assistantSummary, 'Never display raw JSON') consumes space without helping tool selection. It is serviceable but not tight.

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?

An output schema exists, so return-value explanation is rightly omitted, and the description covers mutation semantics, billing, and seat/idempotency requirements adequately. Against a 22-parameter tool with 0% schema coverage and nested objects, though, an agent is left guessing at most of the input structure, so completeness is only borderline for this complexity level.

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 0% across 22 parameters with deeply nested objects (policy, routine, advertiserContext, researchBudget), so the description carries the full explanatory burden — yet it names only idempotencyKey and seatId/seatName and says nothing about policy fields, research budgets, lookback windows, or the advertiserContext structure. The seat/idempotency notes are genuinely useful but cover a tiny fraction of the surface.

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

Purpose5/5

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

States a specific verb (Run) and resource (World Intelligence) scoped to one authorised advertiser, and distinguishes the output ('source-backed external context and creative opportunities') from sibling write tools by explicitly stating it 'never publishes or activates creative'. It also self-identifies as a deprecated alias for run_world_intelligence, letting an agent place it precisely 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 Guidelines4/5

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

The 'Deprecated alias for run_world_intelligence' line effectively routes the agent toward the canonical tool, and the mutation modes plus the seat requirement ('seatId or seatName must be supplied... a remembered seat is not sufficient for a write') give real when/how guidance. However, it never states outright that callers should prefer run_world_intelligence over this alias, leaving that inference to the reader.

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

leanriq_select_seatSelect active seatA
Idempotent
Inspect

Purpose: select an allowed LeanrIQ seat for subsequent seat-scoped operations. Output: returns the selected seat and allowed seat list. Exact-ID read tools can resolve a unique authorised seat server-side. Select or pass a seat when you want to force a workspace, when a write is requested, or when LeanrIQ asks you to disambiguate. Constraints: only authenticated seats already granted to the user can be selected. Failure cases: AUTH_REQUIRED, SEAT_ACCESS_DENIED. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already indicate idempotentHint=true and readOnlyHint=false, but the description adds substantial behavioral context: constraints on authorized seats, specific failure modes (AUTH_REQUIRED, SEAT_ACCESS_DENIED), the internal-state nature of the returned JSON, and the requirement that seatId or seatName be supplied on the exact mutation call when multiple seats are authorized. This aligns with and extends the 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.

Conciseness2/5

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

The description is front-loaded with purpose and usage, but it is bloated with generic response-style instructions ('Never display raw JSON, data, or meta unless...', 'Prefer concise, human language...') that are not tool-specific and repeat guidance that likely belongs elsewhere. The core tool logic could be conveyed in a fraction of the length.

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 low complexity and the presence of an output schema, the description covers essential aspects: purpose, output summary, constraints, failure cases, and parameter usage for writes. The main deficit is the inclusion of extraneous orchestration instructions that dilute the focus, but no critical behavioral gap remains for selecting a seat.

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 0%, so the description carries the burden. It clarifies that seatId and seatName are alternative identifiers and explains when one is required ('For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call'). This adds real semantics beyond the bare schema, though it does not delve into format or examples.

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 function: 'select an allowed LeanrIQ seat for subsequent seat-scoped operations'. This is a specific verb+resource pair and distinguishes the tool from read-only seat getters like get_current_seat or list_accessible_seats, introducing the crucial notion of selecting versus merely reading.

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 explicit guidance on when to use the tool: 'Select or pass a seat when you want to force a workspace, when a write is requested, or when LeanrIQ asks you to disambiguate.' It also states the constraint that only authenticated seats already granted to the user can be selected. However, it does not explicitly name alternatives or state when not to use the tool, leaving some room for ambiguity.

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

leanriq_select_world_opportunity_for_campaignExplicitly select one reviewed, source-provenanced World Intelligence opportunity for an authorised Studio campaign. Studio performs the same campaign authorization, scoped LeanrIQ lookup, and persistence path as the UI. This does not materialise a feed, create creative, traffic, or publish. (deprecated alias)A
Idempotent
Inspect

Explicitly select one reviewed, source-provenanced World Intelligence opportunity for an authorised Studio campaign. Studio performs the same campaign authorization, scoped LeanrIQ lookup, and persistence path as the UI. This does not materialise a feed, create creative, traffic, or publish.. Deprecated alias for select_world_opportunity_for_campaign. Classification: writes to Studio. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
dryRunNo
seatIdNo
seatNameNo
accountIdNo
approvalIdNo
campaignIdYes
advertiserIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdYes
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.9/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description discloses classification (writes to Studio), synchronous execution, forbidden task support, mutation modes (validate_only, preview_only, execute), a partial-failure policy (completed_items_not_rolled_back), and idempotencyKey derivation on omission. This is substantial behavioral context that the annotations alone do not convey.

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

Conciseness3/5

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

The opening sentence is a verbatim repeat of the title (with a stray double period 'publish..'), and the orchestration boilerplate about assistantSummary and never displaying raw JSON is lengthy. The purpose is front-loaded, but meaningful redundancy and boilerplate dilute the definition.

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 an output schema present, return values need not be explained, and the description covers deprecation, write classification, mutation modes, idempotency, and the seat precondition. It is reasonably complete for a complex mutation tool, with the main gap being the near-total absence of per-parameter semantics.

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 0% across 22 parameters, so the description must carry the load, yet it explains only idempotencyKey (deterministic retry key when omitted) and seatId/seatName (required on the exact call when multiple seats are authorised). The core parameters (advertiserId, campaignId, opportunityId, targetMarket, marketContext, locale fields, expectedVersion) receive no semantic explanation anywhere.

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

Purpose5/5

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

The description states a specific verb and resource ('Explicitly select one reviewed, source-provenanced World Intelligence opportunity for an authorised Studio campaign') and explicitly scopes what it does NOT do (no feed materialisation, creative, traffic, or publish). It also identifies itself as a 'Deprecated alias for select_world_opportunity_for_campaign', which distinguishes it from the canonical sibling named in the sibling list.

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

Usage Guidelines3/5

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

Usage is implied by the deprecation label ('Deprecated alias for select_world_opportunity_for_campaign'), which nudges toward the canonical tool, but the description never states outright 'prefer X' or when to avoid this tool. It gives one concrete precondition (seatId/seatName required on the exact call when more than one seat is authorised), but no explicit when-to-use/when-not guidance.

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

list_accessible_seatslist accessible seatsD
Read-onlyIdempotent
Inspect

list accessible seats. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

D1.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint, and the description merely repeats 'Classification: read-only.' It does add genuine value by disclosing that the return payload is internal application state and by giving output-presentation rules (prefer assistantSummary, don't show raw JSON, mention IDs sparingly). That output-handling context justifies a 3, though it says nothing about the read's scope, permissions, or size.

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

Conciseness2/5

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

The size is moderate but badly front-loaded: the purpose is a single tautological sentence, while the bulk is generic boilerplate that could be pasted onto any LeanrIQ tool. Sentences do not earn their place relative to the tool-specific information an agent actually needs.

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

Completeness2/5

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

A rich output schema exists, so return values need not be explained, which offsets some burden. However, for a 14-parameter tool with nested objects and zero schema coverage, the description is far too thin on inputs and provides no scoping, filtering, or prerequisite context. It is not complete enough to guide correct invocation.

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?

There are 14 parameters with 0% schema description coverage, and the description provides no parameter information at all. Names like sourceLocale, marketContext, languageVariantGroupId, and requestedOutputLocales are left entirely unexplained. With no schema documentation to lean on, the description fails to compensate for a severe gap.

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

Purpose2/5

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

The description opens by restating the title almost verbatim ('list accessible seats'), which is a tautology rather than an explanation. It never says what a 'seat' is or how this differs from siblings like get_current_seat, leanriq_current_seat, or leanriq_select_seat. An agent gains no discriminating information beyond the tool name.

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

Usage Guidelines1/5

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

There is no when-to-use or when-not-to-use guidance whatsoever, and no mention of any alternative such as get_current_seat. The only instructions concern output formatting, not tool selection. An agent cannot tell from this text when this tool is the right call versus its seat-related siblings.

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

list_advertiserslist advertisersC
Read-onlyIdempotent
Inspect

list advertisers. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
cursorNo
seatIdNo
statusNo
seatNameNo
accountIdNo
campaignIdNo
creativeIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so 'Classification: read-only' and 'Execution: synchronous' are redundant restatements. The description does add genuinely new behavioral context about output handling (assistantSummary first, never display raw JSON, mention IDs sparingly), which is not derivable from structured fields.

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

Conciseness2/5

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

The text is padded with annotation restatements ('Classification: read-only. Execution: synchronous. Task support: forbidden.') before any useful content, while the actually useful filter information is absent entirely. It is verbose without being informative.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but the description omits everything an agent needs to actually call a 21-parameter filtered list tool: pagination behavior, which filters are combinable, and default result size. The compliance boilerplate does not fill that gap.

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

Parameters1/5

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

Schema description coverage is 0% across 21 parameters, including nested objects like marketContext and marketLanguageProfile, so the schema carries no meaning on its own. The description compensates with nothing — no mention of limit, cursor, filtering, pagination, or any of the ID/locale scoping parameters.

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

Purpose2/5

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

The description opens with 'list advertisers', which is a verbatim restatement of the tool name and title, adding no scope, filter semantics, or differentiation from sibling list_* tools. An agent learns only what the name already told it.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus list_campaigns, list_creatives, or get_advertiser, nor any explanation of the 21 filter parameters that would define when a narrow query is appropriate. The only 'usage' text concerns how to phrase the reply, not when to invoke the tool.

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

list_assetslist assetsB
Read-onlyIdempotent
Inspect

list assets. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. Studio assets are scoped resources: pass advertiserId or creativeId when listing assets, and pass one of those scopes together with assetId when retrieving one asset. LeanrIQ returns INVALID_INPUT rather than a misleading empty result when that scope is absent.

NameRequiredDescriptionDefault
limitNo
cursorNo
seatIdNo
statusNo
seatNameNo
accountIdNo
campaignIdNo
creativeIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, and the description correctly reinforces that with 'Classification: read-only'. It then goes beyond the structured data by disclosing synchronous execution, 'Task support: forbidden', and the INVALID_INPUT failure mode instead of a misleading empty result — genuine behavioral context an agent could not infer otherwise.

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

Conciseness3/5

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

The content is dense but mixes three concerns — tool metadata, response-presentation rules ('never display raw JSON', 'use assistantSummary first'), and parameter scoping — without clear hierarchy. The presentation guidance is lengthy relative to the thin purpose statement, which is not front-loaded.

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?

An output schema exists, so return values need not be described, and the orchestration/presentation guidance is appropriate for an agent-facing API. But the description leaves the 21 filter/pagination parameters essentially unexplained and references an assetId parameter that the schema does not define.

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?

There are 21 parameters with 0% schema description coverage, so the description carries the full burden and largely fails: only advertiserId, creativeId, and assetId are discussed. Worse, assetId does not appear in the input schema at all, which could mislead an agent, while limit, cursor, status, seatId, accountId, campaignId, and all the locale/market fields are never explained.

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

Purpose3/5

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

The description opens with the near-tautological 'list assets', so the core purpose rests almost entirely on the title. It does add scope detail ('Studio assets are scoped resources') that hints at what kind of assets these are, but it never distinguishes this tool from siblings like get_asset, list_creatives, or list_templates.

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

Usage Guidelines3/5

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

It gives concrete routing conditions for the scope parameters (pass advertiserId or creativeId when listing, add the scope to assetId when retrieving) and warns that missing scope yields INVALID_INPUT. However, it offers no guidance on when to choose list_assets over the many other list_* and get_* siblings.

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

list_campaignslist campaignsC
Read-onlyIdempotent
Inspect

list campaigns. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
cursorNo
seatIdNo
statusNo
seatNameNo
accountIdNo
campaignIdNo
creativeIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so "Classification: read-only" is largely redundant. The description does add genuinely new context: synchronous execution, "task support: forbidden," and a response-handling policy (use assistantSummary first, never surface raw JSON). However it omits pagination behavior despite cursor/limit parameters and says nothing about filtering semantics.

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

Conciseness3/5

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

The opening is front-loaded but is pure name restatement, and the classification boilerplate (read-only/synchronous/task support) duplicates annotation data. The presentation directives are individually useful but the JSON-display rule is stated twice in near-identical form, padding the text.

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?

An output schema exists, so return-value explanation is not required, and the description does address response presentation. But for a 21-parameter filtering tool with nested objects and zero schema coverage, the complete absence of any filter or pagination guidance leaves the agent unable to construct a correct call.

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?

21 parameters at 0% schema description coverage, including nested objects (marketContext, marketLanguageProfile) and filters like seatId, campaignId, creativeId, and locale arrays. The description never mentions a single parameter, so it compensates for none of the coverage gap.

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

Purpose2/5

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

"list campaigns" merely restates the tool name and title without adding a verb-object refinement, scope, or any distinction from siblings like list_advertisers, list_creatives, or list_flights. An agent cannot tell from the text why it would pick this over get_campaign or other list tools.

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

Usage Guidelines2/5

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

The description gives extensive guidance on how to present results to the user, but nothing on when to invoke the tool, what preconditions exist, or which sibling (get_campaign, list_flights) is the alternative. Usage context must be inferred entirely from the name.

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

list_competitor_evidenceList qualified display evidence from saved canonical LeanrIQ Competitor Intelligence V2. Cross-channel inspiration is not mixed into DISPLAY evidence.C
Read-onlyIdempotent
Inspect

List qualified display evidence from saved canonical LeanrIQ Competitor Intelligence V2. Cross-channel inspiration is not mixed into DISPLAY evidence.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
seatIdNo
websiteNo
seatNameNo
advertiserIdNo
competitorIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
competitorNameNo
contentLocalesNo
includeEvidenceNo
competitorDomainNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, closed-world, non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: synchronous execution, task support forbidden, and that the return payload is internal application state with rules for surfacing assistantSummary versus raw JSON.

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?

Purpose is front-loaded in the first sentence, but the description repeats the title verbatim (including a doubled period) and then appends a long block of presentation rules. It is serviceable but includes redundancy and low-signal directive text.

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?

An output schema exists, so return values need not be described, but for a 21-parameter read tool with zero schema descriptions the definition leaves the entire input surface undocumented. It neither explains the filtering model nor helps the agent choose among the large sibling set.

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?

The schema has 21 parameters at 0% description coverage, and the description mentions none of them. Filtering options like seatId, competitorId, website, targetMarket, includeEvidence, and limit are left entirely unexplained, so an agent has no basis for constructing a correct call.

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

Purpose4/5

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

States a specific verb (List), resource (qualified display evidence), and source scope (saved canonical LeanrIQ Competitor Intelligence V2), and clarifies it excludes cross-channel inspiration. However, it does not distinguish itself from close siblings like list_competitors, get_competitor_intelligence, or leanriq_get_competitor_creative_intelligence.

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

Usage Guidelines2/5

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

There is no guidance on when to call this tool versus the many sibling competitor-intelligence tools. The only usage-like instruction ('Use assistantSummary first', 'suggest the next best LeanrIQ action') concerns response formatting, not tool selection or preconditions.

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

list_competitorslist competitorsC
Read-onlyIdempotent
Inspect

list competitors. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
cursorNo
seatIdNo
statusNo
seatNameNo
accountIdNo
campaignIdNo
creativeIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered; the description reinforces this with 'Classification: read-only' and adds non-redundant traits like 'Execution: synchronous' and 'Task support: forbidden'. It also discloses genuinely useful output-handling behavior (use assistantSummary first, never surface raw JSON, mention IDs only for follow-up), which the annotations do not provide.

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

Conciseness3/5

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

The purpose is front-loaded in the first sentence and the prose is tight, but a large share of the text is generic orchestration/output-formatting policy that reads like shared boilerplate rather than tool-specific content, so several sentences do not earn their place in this particular definition.

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?

An output schema exists, so return values need not be described. However, for a 21-parameter tool sitting among several competitor-related siblings, the description supplies no filtering guidance and no routing guidance, leaving the core invocation decisions undocumented for a high-complexity tool.

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?

The schema has 21 parameters with 0% description coverage and no enums, so the description carries the full burden of explaining filtering semantics. It says nothing about any parameter - not the seat/campaign/creative/advertiser IDs that appear to scope the listing, nor the pagination pair (limit/cursor), nor the locale/market fields - leaving the agent to guess how to narrow results.

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

Purpose3/5

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

The description opens with 'list competitors', a clear verb+resource, but it is essentially a restatement of the tool name/title and gives no scope (which competitors, filtered by what) or differentiation from nearby siblings such as list_competitor_evidence, get_competitor_intelligence, and run_competitor_intelligence. The agent can tell it is a listing tool, but nothing about what the listing covers.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all: nothing says when to call list_competitors versus list_competitor_evidence or run_competitor_intelligence. The only imperatives ('use assistantSummary first', 'suggest the next best LeanrIQ action') concern how to present results, not when this tool is the right choice.

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

list_creativesList Studio creatives. Prefer campaignId for deterministic campaign inventory reads. If only campaignName is available, pair it with advertiserId or advertiserName so LeanrIQ can resolve the campaign once, follow pagination centrally, and return the full campaign creative set without local guesswork.A
Read-onlyIdempotent
Inspect

List Studio creatives. Prefer campaignId for deterministic campaign inventory reads. If only campaignName is available, pair it with advertiserId or advertiserName so LeanrIQ can resolve the campaign once, follow pagination centrally, and return the full campaign creative set without local guesswork.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. This tool is the authoritative saved Studio creative inventory for the requested scope. With an exact campaignId, call list_creatives directly as the first and only inventory read. The MCP response returns a compact inventory containing creative names, IDs, sizes and statuses; use get_creative only when full creative internals are needed. Non-empty rows prove saved creatives exist regardless of campaign build or activation workflow state; a completed empty result is authoritative. Do not call get_campaign first to decide whether creatives exist.

NameRequiredDescriptionDefault
limitNo
cursorNo
seatIdNo
statusNo
seatNameNo
accountIdNo
campaignIdNo
creativeIdNo
advertiserIdNo
campaignNameNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
advertiserNameNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/non-destructive, and the description still adds real context: synchronous execution, task support forbidden, pagination handled centrally, the compact shape of the return (names, IDs, sizes, statuses), and the authoritative empty-result semantics ('a completed empty result is authoritative'). These are behaviors an agent cannot infer from 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.

Conciseness3/5

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

The purpose sentence is front-loaded and useful, but the title text is duplicated verbatim in the description (including a doubled period after 'guesswork..'), and the response-formatting boilerplate ('Never display raw JSON...') adds length. The guidance earns its place, but the repetition and bloat are real.

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 read-only list tool with an output schema and full annotation coverage, the description covers purpose, routing, alternatives, and result semantics well. The remaining gap is the 23-parameter surface at 0% schema coverage, which the description only partially addresses.

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% across 23 parameters, so the description must carry the load. It meaningfully explains the routing parameters (campaignId vs campaignName + advertiserId/advertiserName), but limit, cursor, seatId, status, accountId, creativeId, locales, and marketContext remain undocumented in both schema and description. Partial compensation, not full.

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

Purpose5/5

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

States a specific verb+resource ('List Studio creatives') and explicitly positions it against siblings: it is 'the authoritative saved Studio creative inventory,' get_creative is only for 'full creative internals,' and get_campaign should not gate it. An agent can distinguish it from list_creative_versions, get_creative, and build_campaign_creative_set without opening a schema.

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

Usage Guidelines5/5

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

Gives explicit routing rules: prefer campaignId, and if only campaignName is available pair it with advertiserId/advertiserName. It also states when-not ('Do not call get_campaign first to decide whether creatives exist') and the exact alternative for deeper data ('use get_creative only when full creative internals are needed').

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

list_creative_versionslist creative versionsC
Read-onlyIdempotent
Inspect

list creative versions. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdNo
flightIdNo
seatNameNo
accountIdNo
previewIdNo
campaignIdNo
creativeIdYes
templateIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.6/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, and closed-world. The description adds genuinely useful behavioral context beyond them: synchronous execution, that task support is forbidden, and how the returned state should be surfaced (use assistantSummary first, avoid dumping raw JSON). This is meaningful orchestration guidance, though it omits pagination or result-shape behavior.

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

Conciseness3/5

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

The purpose is front-loaded in the first sentence, which is good, but the remaining text is largely generic presentation boilerplate ('Prefer concise, human language…suggest the next best LeanrIQ action') rather than tool-specific information. It is not egregiously long, but several sentences do not earn their place for tool selection.

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

Completeness2/5

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

This is a complex tool (23 params, nested objects). An output schema exists, so return values needn't be explained, but the complete absence of any parameter-level context for 23 undocumented fields leaves the description inadequate for correct invocation. The presentation guidance is present, but it cannot offset the parameter gap.

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?

There are 23 parameters at 0% schema description coverage, and the description mentions none of them — not even the required creativeId. With low coverage the description is expected to compensate, but it provides zero parameter meaning, leaving the agent to guess at what the other 22 filters do.

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

Purpose3/5

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

The description opens with 'list creative versions', which only restates the tool name and title. It states the operation category (read-only, synchronous) but does not distinguish this from siblings like list_creatives, get_creative, or create_creative_version, so an agent must infer the distinction from the name alone.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance relative to alternatives (e.g. when to call this versus get_creative or list_creatives). Its downstream sentences govern how to present results, not when to invoke the tool, so the selection decision is left entirely to inference.

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

list_flightslist flightsC
Read-onlyIdempotent
Inspect

list flights. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
cursorNo
seatIdNo
statusNo
seatNameNo
accountIdNo
campaignIdNo
creativeIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.3/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely new operational context: synchronous execution, task support forbidden, and the fact that the returned JSON is internal orchestration state that should not be surfaced raw. That last point materially constrains how an agent should handle the output, which annotations do not express.

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

Conciseness2/5

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

The token budget is spent on presentation boilerplate for the assistant rather than on tool semantics. The first sentence is a name restatement, and the remainder is response-style instruction that crowds out the filtering and pagination information an agent actually needs to call the tool.

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

Completeness2/5

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

With 21 undocumented parameters, nested objects, and no field-level descriptions, the definition is materially incomplete for invocation. The output schema's existence excuses it from explaining return values, but that does not cover the absent filtering, scoping, and pagination semantics the agent must know before calling.

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

Parameters1/5

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

Schema description coverage is 0% across 21 parameters, including nested objects like marketContext and marketLanguageProfile, yet the description mentions no parameter at all. Nothing explains that seatId/accountId/campaignId narrow the listing or that limit/cursor paginate, leaving the agent to guess entirely from property names.

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

Purpose2/5

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

"list flights" is a direct restatement of the tool name and title, giving no verb+resource specificity beyond what the identifier already conveys. It never states what a flight is here, what the listing is scoped to, or how it differs from get_flight or the many other list_* siblings.

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

Usage Guidelines2/5

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

The description offers response-formatting guidance (use assistantSummary first, don't show raw JSON) but says nothing about when to call this tool versus get_flight, list_campaigns, or list_tasks. There is no filtering context, no prerequisite, and no exclusion condition to route the agent.

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

list_taskslist tasksC
Read-onlyIdempotent
Inspect

list tasks. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
cursorNo
seatIdNo
statusNo
seatNameNo
accountIdNo
campaignIdNo
creativeIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the "Classification: read-only" line is largely redundant. The description does add genuinely useful behavior: consume assistantSummary first, never surface raw JSON unless asked, and mention IDs selectively. "Task support: forbidden" is mildly informative but unclear.

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

Conciseness3/5

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

The classification one-liner is front-loaded, but the bulk of the text is presentation policy rather than tool description, and the opening sentence "list tasks" adds nothing. It is not bloated to the point of noise, but the emphasis is misplaced relative to the tool's actual job.

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?

An output schema exists, so return values need not be described. However, for a 21-parameter list tool with zero schema descriptions, no parameter or filtering guidance, and no sibling differentiation, the description is far too thin on the parts that matter.

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?

There are 21 parameters with 0% schema description coverage, and the description mentions none of them. Fields like limit, cursor, status, seatId, and the locale/market objects are left entirely unexplained, so the description fails to compensate for the documentation gap.

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

Purpose2/5

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

"list tasks" is essentially a restatement of the tool name and title with no additional specificity about what a task is, what can be filtered, or how it differs from get_task/cancel_task/retry_task. The only additions are metadata labels (read-only, synchronous, task support: forbidden) rather than purpose elaboration.

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 list_tasks versus siblings like get_task, cancel_task, or retry_task. The text about presenting output is response-handling policy, not invocation guidance. An agent gets no signal about scope or selection conditions.

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

list_templateslist templatesC
Read-onlyIdempotent
Inspect

list templates. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
cursorNo
seatIdNo
statusNo
seatNameNo
accountIdNo
campaignIdNo
creativeIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, but the description adds real context beyond them: synchronous execution, task support forbidden, and that the payload is internal application state centered on an assistantSummary field. That is meaningful disclosure about output shape and interaction mode.

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?

Sentences are short and the operational facts are stated up front, but a large share of the text is orchestration/presentation boilerplate ('internal application state for LeanrIQ and ChatGPT orchestration', styling rules) that serves the answer-writing step rather than tool selection or invocation.

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?

An output schema exists, so return-value documentation is not required, but for a tool with 21 undocumented filter parameters and no stated filtering scope, the definition omits what an agent needs to call it correctly. Nothing explains what a template is or how the many optional filters interact.

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?

There are 21 optional parameters (limit, cursor, and a large set of ID/locale/market filters, including nested objects) with 0% schema description coverage and no enums. The description mentions no parameter, no filter semantics, no pagination-via-cursor behavior, and does not compensate for the coverage gap at all.

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

Purpose3/5

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

The first sentence, 'list templates,' is essentially the tool name restated; it gives a verb and a resource but nothing about what a template is or what the listing returns. It also does not distinguish the tool from its obvious sibling get_template. The remaining sentences describe execution and presentation policy rather than purpose.

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

Usage Guidelines2/5

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

There is no guidance on when to call list_templates versus get_template, or in what workflow context templates are enumerated. The only 'guidance' is about how to phrase the answer to the user (use assistantSummary first, don't show raw JSON), which is response formatting, not tool-selection guidance.

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

list_world_opportunitiesList active World Intelligence creative opportunities for one authorised advertiser. Opportunities are human-review recommendations and never publish creative.B
Read-onlyIdempotent
Inspect

List active World Intelligence creative opportunities for one authorised advertiser. Opportunities are human-review recommendations and never publish creative.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
seatIdNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotent/non-destructive, so the repeated 'Classification: read-only' adds little. However, 'never publish creative' is genuine behavioral disclosure about side-effect boundaries, and the orchestration directives (summary-first, concise human language, suggest next LeanrIQ action) add context not present in annotations.

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

Conciseness3/5

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

The purpose is front-loaded and the guidance is ordered sensibly, but the description duplicates the title verbatim in its first sentence, contains a stray double period, and spends most of its length on response-formatting rules rather than tool selection behavior.

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

Completeness2/5

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

An output schema exists, so return values need not be explained. But a 16-parameter filtering tool with zero schema descriptions needs the description to carry parameter meaning, and it does not; the agent is left guessing at seat/advertiser/market/locale filter semantics.

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?

The tool takes 16 parameters including nested objects (marketContext, marketLanguageProfile) with 0% schema description coverage, and the description explains none of them. An agent cannot tell what seatId versus advertiserId versus languageVariantGroupId should contain, nor which filters are mutually exclusive.

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

Purpose5/5

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

The description states a specific verb and resource ('List active World Intelligence creative opportunities'), scopes it ('for one authorised advertiser'), and adds a defining constraint ('human-review recommendations and never publish creative'). This is enough to separate it from get_world_opportunity (singular fetch) even without naming the sibling.

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

Usage Guidelines3/5

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

It gives clear guidance on how to present results (assistantSummary first, no raw JSON, IDs only when useful), but says nothing about when to choose this tool over list_world_signals, get_world_opportunity, or get_world_intelligence. Usage conditions are implied by 'active' and 'one authorised advertiser' rather than stated.

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

list_world_signalsList active, source-provenanced World Intelligence signals for one authorised advertiser. This is current contextual intelligence, not a general-purpose news search.A
Read-onlyIdempotent
Inspect

List active, source-provenanced World Intelligence signals for one authorised advertiser. This is current contextual intelligence, not a general-purpose news search.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
limitNo
seatIdNo
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint and openWorldHint, so the 'Classification: read-only' line is largely redundant. The description adds genuinely new behavior: synchronous execution, task support forbidden, and how the response should be surfaced (assistantSummary first, no raw JSON unless asked). That output-handling guidance is real value 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.

Conciseness3/5

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

The opening sentence duplicates the title verbatim, and the 'Classification/Execution/Task support' trio restates annotation-provided facts in a staccato list, including a stray double period. The rendering guidance at the end is useful but long; overall it is padded rather than tightly front-loaded.

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?

Output schema exists, so return-shape explanation is unnecessary, and the rendering rules are helpful. But for a 16-parameter tool with zero schema descriptions and nested objects, the description leaves the agent with no guidance on which filter parameters matter or how they interact, which is a substantive gap.

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 0% across 16 parameters including nested objects (marketContext, marketLanguageProfile), and the description names not a single parameter or its meaning. The schema exposes types and bounds but nothing about intent (e.g. advertiserId vs seatId vs targetMarket), so the description fails to compensate for the coverage gap.

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

Purpose5/5

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

States a specific verb (List) and resource (World Intelligence signals) and adds scope qualifiers (active, source-provenanced, one authorised advertiser). It also explicitly negates a plausible misreading ('not a general-purpose news search'), letting an agent separate it from search-style 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?

Provides one clear exclusion ('not a general-purpose news search'), which implies when to use it. However, it never names a sibling alternative (e.g. list_world_opportunities, get_world_intelligence) or states the condition that would route the agent elsewhere, so usage is only partially guided.

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

preview_trafficking_outputpreview trafficking outputC
Read-onlyIdempotent
Inspect

preview trafficking output. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
forceNo
dryRunNo
seatIdNo
flightIdYes
seatNameNo
accountIdYes
approvalIdNo
creativeIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.3/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world. The description adds useful context beyond them: synchronous execution, task support forbidden, and that the return is internal orchestration state with an assistantSummary field. This is genuine added value, though it says nothing about auth requirements or the preview's relationship to actual trafficking.

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

Conciseness3/5

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

The classification/execution prefix is front-loaded and structured, but several sentences are generic response-style directives that dilute the definition and could apply to any tool. It is not egregiously long, but not every sentence earns its place.

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?

An output schema exists so return values need not be explained. However, for a 21-parameter tool with zero schema coverage, the description gives an agent no guidance on required inputs or what force/dryRun actually mean, leaving it unable to call the tool correctly.

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

Parameters2/5

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

Schema description coverage is 0% across 21 parameters, so the description carries the full burden of explaining them. Yet it mentions no parameter at all — not accountId/flightId (required) nor force, dryRun, seatId, creativeId, locale/market fields. It fails to compensate for the coverage gap.

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

Purpose2/5

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

The opening sentence 'preview trafficking output' simply restates the title and never clarifies what is being previewed or why. It doesn't distinguish this tool from siblings like traffick_flight, retraffick_flight, or validate_flight. An agent cannot tell from the text what this operation actually does.

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

Usage Guidelines2/5

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

There is no statement of when to call this tool versus alternatives such as traffick_flight or validate_flight. The instructions present are about how to present the returned data to the user, not about invocation context. Usage must be inferred entirely from the name.

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

promote_creative_workspaceDeliberately promote one approved LeanrIQ creative workspace into Studio. The workspace and selected territory are retained, and a repeated promotion returns the recorded result rather than duplicating Studio production records.A
Idempotent
Inspect

Deliberately promote one approved LeanrIQ creative workspace into Studio. The workspace and selected territory are retained, and a repeated promotion returns the recorded result rather than duplicating Studio production records.. Classification: writes to Studio, creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
accountIdNo
approvalIdNo
campaignIdNo
workspaceIdYes
advertiserIdNo
campaignNameNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.5/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: creates billable AI usage, durable execution, three mutation modes (validate_only, preview_only, execute), a partial-failure policy of completed_items_not_rolled_back, deterministic idempotency-key derivation, and the requirement that seatId/seatName be supplied on the exact write call. This is exactly the behavioral disclosure a write tool needs.

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

Conciseness3/5

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

The purpose statement is front-loaded, but the body carries generic orchestration boilerplate ('Never display raw JSON', 'Prefer concise human language', 'suggest the next best LeanrIQ action') that is not specific to this tool and inflates length. Minor blemish: a doubled period after 'production records..'.

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?

An output schema exists so return values need not be explained, and the mutation/idempotency/seat semantics are well covered. The gap is parameter context: with 21 params at 0% description coverage, the agent lacks meaning for fields like campaignId, advertiserId, targetMarket, and the locale arrays, which is a real completeness shortfall for a promotion write.

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 0% across 21 parameters. The description adds meaning for only three (idempotencyKey derivation, seatId/seatName requirement), leaving most business parameters (campaignId, advertiserId, targetMarket, locale variants, approvalId, etc.) undocumented in both schema and text. It does not compensate for the coverage gap.

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

Purpose4/5

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

The description states a specific verb (promote) and resource (one approved LeanrIQ creative workspace) with a named destination (Studio), and adds the retention/idempotency behavior. It does not name or contrast a sibling such as launch_creative_campaign, so the agent must infer the boundary, but the core action is unambiguous.

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

Usage Guidelines3/5

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

'Deliberately promote one approved...' and 'one approved' imply the precondition (an already-approved workspace), giving implied usage. However, no explicit when-to-use vs when-not and no alternative sibling is named for promoting/launching, so guidance is only inferred.

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

provide_performance_feedbackprovide performance feedbackC
Idempotent
Inspect

provide performance feedback. Classification: writes to Studio. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
seatIdNo
feedbackYes
flightIdNo
seatNameNo
accountIdYes
creativeIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.6/5.0
Behavior5/5

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

Beyond the annotations, the description discloses substantial behavior: it writes to Studio, is synchronous, forbids task support, supports validate_only/preview_only/execute mutation modes, uses a completed_items_not_rolled_back partial-failure policy, derives deterministic retry keys when idempotencyKey is omitted, and requires an explicit seatId or seatName on multi-seat mutations. These details materially affect how an agent should invoke the tool and are not available from structured fields alone.

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

Conciseness2/5

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

The description opens with a tautological restatement and then packs execution, mutation, retry, seat, and output-formatting guidance into a dense block without clear structure. While many details are relevant, the front-loading is poor and the first sentence wastes space instead of defining the tool.

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

Completeness2/5

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

This is a 19-parameter mutation with no parameter descriptions and no output schema explanation in the description beyond 'returned JSON is internal application state.' The description covers execution semantics well but leaves an agent unable to understand what feedback content to provide or how to populate most parameters.

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 0% across 19 parameters, so the description must compensate. It only discusses idempotencyKey behavior and the seatId/seatName requirement, leaving the meanings of accountId, feedback, flightId, creativeId, locale fields, market context, and other parameters completely unspecified.

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

Purpose2/5

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

The first sentence, 'provide performance feedback,' is a tautological restatement of the tool name and title; it never specifies what kind of feedback, which resource, or what operation is being performed. The follow-up sentences describe execution semantics rather than purpose, so an agent cannot distinguish this tool's actual function from siblings like record_world_research_feedback or qa_creative.

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

Usage Guidelines2/5

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

The description gives output-handling instructions ('Use assistantSummary first... Never display raw JSON...') and notes seat prerequisites for mutations, but it never says when to choose this tool over alternatives or when not to use it. Mutation modes validate_only/preview_only/execute are listed but not tied to selection criteria or sibling tools.

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

push_flight_to_yahooPublish path for approved work only: traffick and certify a saved Studio flight, generate or reuse ad-server tags, and push the resulting inactive or approved payload to Yahoo DSP with audit evidence.B
Idempotent
Inspect

Publish path for approved work only: traffick and certify a saved Studio flight, generate or reuse ad-server tags, and push the resulting inactive or approved payload to Yahoo DSP with audit evidence.. Classification: writes to Studio, publishes externally. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
seatIdNo
flightIdYes
seatNameNo
accountIdNo
approvalIdNo
creativeIdsNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.4/5.0
Behavior5/5

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

Beyond the annotations (readOnly=false, openWorld=true, idempotent=true, destructive=false), the description discloses substantial operational behavior: synchronous execution, three mutation modes, the completed_items_not_rolled_back partial-failure policy, deterministic idempotency-key derivation on writes, and the rule that seatId/seatName must be supplied on the exact mutating call. These are exactly the traits an agent needs before invoking an external-publishing write.

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

Conciseness2/5

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

The useful publish sentence is front-loaded, but it is followed by a block of generic response-formatting boilerplate (assistantSummary, 'never display raw JSON', 'suggest the next best LeanrIQ action') that does not describe this tool's behavior and bloats the definition. There is also a doubled period, signaling unpolished 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?

An output schema exists so return values need not be described, and annotations plus the description cover the safety and staging profile well. However, for a 19-parameter external-publish mutation with 0% schema coverage, the description leaves most input semantics unexplained, which is a real gap for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0% across 19 parameters, so the description must carry the burden, and it only clarifies three of them (idempotencyKey, seatId, seatName). The core business inputs — flightId, accountId, approvalId, creativeIds, targetMarket(s), locales — receive no meaning, format, or relationship guidance.

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

Purpose4/5

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

The description names a specific multi-step verb+resource chain: traffick and certify a saved Studio flight, generate/reuse ad-server tags, and push a payload to Yahoo DSP. It is clearly a publish tool scoped to approved work only. It does not, however, differentiate itself from close siblings such as traffick_flight, retraffick_flight, validate_flight, or preview_trafficking_output, so an agent cannot route between them from the text alone.

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

Usage Guidelines3/5

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

'Publish path for approved work only' implies the condition for use, and the mutation modes (validate_only, preview_only, execute) tell the agent how to stage the call. But no alternatives are named and no explicit when-not guidance is given, so the agent must infer routing against sibling trafficking/validation tools.

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

qa_creativeQA a creative for launch readiness with actionable issues, certification evidence, and next steps before preview, revision, or trafficking.B
Idempotent
Inspect

QA a creative for launch readiness with actionable issues, certification evidence, and next steps before preview, revision, or trafficking.. Classification: creates billable AI usage. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work.

NameRequiredDescriptionDefault
brandYes
rulesNo
formatYes
seatIdNo
contextNo
creativeYes
seatNameNo
objectiveYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and the description adds genuinely non-structured context: 'creates billable AI usage', synchronous execution, mutation modes (validate_only/preview_only/execute), and a partial-failure policy of completed_items_not_rolled_back. These are real behavioral traits an agent needs and they go beyond the annotations. It loses a point for not clarifying permission requirements or the deterministic retry-key edge cases in more depth.

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

Conciseness3/5

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

The purpose is front-loaded, but the description duplicates the title verbatim and then spends multiple sentences on orchestration boilerplate ('internal application state for LeanrIQ and ChatGPT orchestration', 'Never display raw JSON'), which dilutes the tool-selection value. Some sentences earn their place (billable usage, mutation modes, failure policy); others do not.

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?

An output schema exists so return values need not be explained, and annotations plus the mutation-mode text cover safety reasonably. However, for a 20-parameter tool with nested objects and 0% schema coverage, the complete absence of guidance on the required business arguments (brand, format, objective, creative) leaves the invocation surface under-specified.

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 0% across 20 parameters (4 required), and the description says nothing about brand, format, objective, creative, or the nested creative/marketContext objects, so it does not compensate for the coverage gap. The only parameter-adjacent content is the idempotencyKey behavior note, and that key is not even present in the shown schema.

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

Purpose4/5

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

States a specific verb+resource ('QA a creative for launch readiness') and names the downstream operations it precedes (preview, revision, trafficking), which helps separate it from siblings like validate_flight or preview_trafficking_output. It is clear but does not explicitly name an alternative tool to route to, so it stops short of a 5.

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

Usage Guidelines3/5

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

'before preview, revision, or trafficking' implies workflow placement but never states when-not-to-use or names a sibling alternative (e.g. validate_flight for flights). The only explicit directives concern post-call output handling (assistantSummary first), not tool selection, so usage guidance remains implied.

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

record_world_research_feedbackRecord reviewed relevance or decision feedback without changing approval or safety constraints.C
Idempotent
Inspect

Record reviewed relevance or decision feedback without changing approval or safety constraints.. Classification: read-only. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
reasonNo
seatIdNo
eventIdYes
outcomeYes
seatNameNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.3/5.0
Behavior1/5

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

The description states 'Classification: read-only,' but the annotations declare readOnlyHint=false and the same description lists executable mutation modes. This directly contradicts the structured annotations, so behavioral transparency is scored 1 per the contradiction rule despite the otherwise useful idempotency and seat notes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text opens with the title verbatim (including a doubled period) and then piles on generic orchestration boilerplate rather than front-loading tool-specific behavior. Much of the content is shared template language that does not earn its place for this specific tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 18 parameters, nested objects and an enum at 0% schema description coverage, the description leaves the core calling contract unexplained. An output schema exists, so return format need not be described, but the input side is severely under-specified and the read-only/mutation contradiction compounds the gap.

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 0% across 18 parameters, so the description must carry the load and largely does not. It only partially covers idempotencyKey, seatId and seatName, leaving required fields (eventId, outcome) and its seven-value enum completely unexplained.

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 opening clause gives a specific verb+resource: 'Record reviewed relevance or decision feedback,' and adds the important scoping qualifier 'without changing approval or safety constraints,' which helps separate it from approval-mutating siblings. It is clear what the tool does, though it does not name a specific sibling tool it is distinct from.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as get_world_research_decision or provide_performance_feedback. The description supplies operational rules (idempotency, seat requirement) but not situational use context, leaving the agent to infer the trigger.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_brand_profileRefresh and save a standalone Studio advertiser brand profile.B
Idempotent
Inspect

Refresh and save a standalone Studio advertiser brand profile.. Classification: writes to Studio, creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
seatIdNo
brandUrlYes
seatNameNo
accountIdYes
brandNameYes
advertiserIdYes
forceRefreshNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
competitorLimitNo
requestedSectionsNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond the annotations: 'writes to Studio, creates billable AI usage', durable execution, validate_only/preview_only/execute mutation modes, and a completed_items_not_rolled_back partial-failure policy. It also explains deterministic idempotency-key derivation, which the annotations only hint at via idempotentHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded in the first sentence, but the body is padded with generic LeanrIQ response-formatting boilerplate ('Never display raw JSON', 'Use assistantSummary first') that is not specific to this tool and dilutes the signal.

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?

An output schema exists, so return values needn't be covered, but for a 22-parameter mutation with no schema descriptions the definition omits what refresh actually does, what forceRefresh controls, and what the section/locale/market parameters mean.

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 0% across 22 parameters, so the description carries the burden. It clarifies only idempotencyKey behavior and the seatId/seatName requirement; the other 20 parameters (brandName, brandUrl, forceRefresh, targetMarkets, requestedSections, competitorLimit, etc.) are unexplained anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource combination ('Refresh and save a standalone Studio advertiser brand profile'), which is clear. However, it never distinguishes itself from siblings like get_brand_profile or refresh_brand_visuals, and 'Refresh and save' is somewhat redundant since refresh implies persistence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit statement of when to use this versus get_brand_profile or refresh_brand_visuals. The seat requirement ('seatId or seatName must be supplied on that exact tool call') and idempotency note are prerequisites rather than usage routing, and no exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_brand_visualsrefresh brand visualsC
Idempotent
Inspect

refresh brand visuals. Classification: writes to Studio, creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
seatIdNo
optionsNo
storageNo
seatNameNo
accountIdYes
brandNameYes
websiteUrlYes
advertiserIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing billable AI usage, durable execution, optional task support, a partial-failure policy of completed_items_not_rolled_back, idempotency-key derivation for omitted keys, and the hard requirement that seatId/seatName be supplied on the exact write call when multiple seats are authorized. None of that appears in the annotations, so it is genuine added value.

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?

Operational metadata is front-loaded well, but the middle section is generic orchestration boilerplate about assistantSummary, raw JSON display, and ID mentions that reads like a shared template rather than tool-specific guidance. It is longer than the tool-specific content warrants.

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?

An output schema exists, so return-value explanation is rightly omitted, and the description covers mutation modes, billing, partial-failure behavior, idempotency, and seat rules. However, for a 21-parameter mutation tool it leaves the substantive business inputs entirely unexplained, which is a meaningful completeness gap.

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 21 parameters at 0% schema description coverage, the description only clarifies idempotencyKey (derivation behavior) and seatId/seatName (write requirement). The remaining ~18 parameters, including the large nested options and storage objects and all locale/market fields, are undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'refresh brand visuals', which merely restates the tool name and title rather than stating a distinct verb+resource with a clear outcome. 'Writes to Studio' hints at the effect but the core purpose is a tautology, and nothing distinguishes it from siblings like refresh_brand_profile or get_brand_visuals.

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 mutation modes (validate_only, preview_only, execute) imply a staged invocation flow, and the seat requirement gives a precondition for writes. However, it never states when to prefer this over refresh_brand_profile or how it relates to get_brand_visuals, so usage is only implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_creative_versionrestore creative versionC
Idempotent
Inspect

restore creative version. Classification: writes to Studio. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
dryRunNo
seatIdNo
creativeNo
seatNameNo
accountIdYes
versionIdYes
approvalIdNo
creativeIdYes
sourceLocaleNo
targetMarketNo
changeSummaryNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), and the description genuinely adds beyond them: synchronous execution, task support forbidden, a partial-failure policy of completed_items_not_rolled_back, and the rule that seatId/seatName must be supplied on the exact write call when multiple seats are authorised. These are substantive operational facts an agent needs. It stops short of stating permissions or reversibility of the restore itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence wastes its position restating the name instead of front-loading what the tool does. A large block is generic orchestration boilerplate ('Use assistantSummary first', 'Never display raw JSON', 'Prefer concise, human language') that is not specific to this tool and drowns the few tool-specific facts.

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?

An output schema exists, so return values need not be explained, which offsets some burden. But for a 23-parameter mutation, the description leaves the core purpose and nearly all parameters undefined, so an agent cannot confidently select or invoke it from this definition alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 23 parameters at 0% schema description coverage, the description carries the full explanatory burden, yet it clarifies only three: idempotencyKey (deterministic retry derivation) and seatId/seatName (required on the exact write call). The remaining ~20 parameters (creativeId, versionId, expectedVersion, locale/market fields, etc.) are left entirely undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence 'restore creative version' is a tautological restatement of the name and title, adding no verb/resource precision beyond them. It never explains what 'restoring' a version means (reverting a creative to a prior version) or how it differs from siblings like revise_creative or create_creative_version. The remaining text is operational metadata, not purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance relative to alternatives such as revise_creative, clone_creative, or list_creative_versions. The mutation modes (validate_only, preview_only, execute) imply a choice of execution style but not when this tool is the right one to call. The response-formatting instructions address output handling, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retraffick_creativeretraffick creativeC
Idempotent
Inspect

retraffick creative. Classification: publishes externally. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
forceNo
dryRunNo
seatIdNo
flightIdYes
seatNameNo
accountIdYes
approvalIdNo
creativeIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false, openWorldHint=true), and the description adds genuinely useful context beyond them: external publication, durable execution, the partial-failure policy that completed items are not rolled back, deterministic idempotency-key derivation on omitted keys, and the rule that a write with multiple authorised seats must pass seatId/seatName on that exact call. These are real operational constraints an agent would otherwise get wrong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful constraints (idempotency, seat, partial failure) are buried after a wall of operational metadata, and roughly half the text is cross-tool boilerplate about how to format user-facing responses and never show raw JSON. That boilerplate does not help an agent invoke this specific tool and dilutes the front-loaded signal.

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?

An output schema exists, so return values need not be described, but for a 21-parameter external-publishing mutation the description leaves the core purpose unstated and most parameter meanings unexplained. It is complete on orchestration/response-handling policy and incomplete on what the tool does and what its arguments mean.

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 0% across 21 parameters, so the description carries the full burden, but it only explains idempotencyKey and the seatId/seatName write requirement. The remaining high-value parameters (force, dryRun, approvalId, targetMarkets/contentLocales language resolution fields, marketContext, languageVariantGroupId) are undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens by restating the name ('retraffick creative') and then gives classification metadata ('publishes externally', 'Execution: durable') rather than a verb+resource statement of what the tool actually does. It never distinguishes itself from close siblings such as traffick_creative, retraffick_flight, or preview_trafficking_output, so an agent cannot tell which trafficking variant to pick from the description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It enumerates mutation modes (validate_only, preview_only, execute) which hints at mode selection, but nowhere states when to choose this tool over traffick_creative or retraffick_flight, nor any prerequisites beyond the seat requirement. The paragraph about how to phrase responses to the user is presentation guidance, not tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retraffick_flightretraffick flightB
Idempotent
Inspect

retraffick flight. Classification: publishes externally. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
forceNo
dryRunNo
seatIdNo
flightIdYes
seatNameNo
accountIdYes
approvalIdNo
creativeIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare openWorld, idempotent, non-destructive mutation, but the description adds genuinely non-obvious behavior: the partial-failure policy 'completed_items_not_rolled_back', the deterministic idempotency-key derivation on omission, and the rule that a seat must be supplied on the exact write call when multiple seats are authorized. These are real behavioral disclosures beyond structured fields, though auth/permission and rate-limit traits are not covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The metadata is front-loaded and dense, but the opening is a name restatement rather than a purpose statement, and a large share of the text is reusable UX boilerplate about assistantSummary and never displaying raw JSON that is not specific to this tool. Sentences carry information, but the sizing is not tuned to this operation.

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 21-parameter external-publishing mutation, the description covers failure semantics, idempotency, and seat authorization, and an output schema exists so return values need not be restated. It is nonetheless incomplete on what the operation actually does relative to siblings and on the meaning of the majority of its parameters.

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 0% across 21 parameters, so the description must carry the full load, yet it only explains idempotencyKey and seatId/seatName. Core inputs such as accountId, flightId, approvalId, creativeId, sourceLocale, targetMarket, and the marketContext/locale group are left entirely undocumented, so most parameters remain opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The only purpose statement is 'retraffick flight' (a restatement of the name) plus the classification 'publishes externally' and 'Mutation modes: validate_only, preview_only, execute'. This conveys that it is an external-publishing mutation, but never explains what 'retraffick' does to a flight, nor distinguishes it from the sibling traffick_flight or preview_trafficking_output. Purpose is present but vague.

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 mutation modes (validate_only, preview_only, execute) imply a staged usage pattern, and the seat/idempotency notes give conditional rules for writes. However, there is no explicit when-to-use-this-vs-alternatives guidance naming traffick_flight, validate_flight, or preview_trafficking_output, and no exclusions. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retry_taskretry taskD
Idempotent
Inspect

retry task. Classification: read-only. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
reasonNo
seatIdNo
taskIdYes
seatNameNo
accountIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

D1.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description states "Classification: read-only" while annotations declare readOnlyHint=false, a direct contradiction. Although it does add real behavioral context (idempotency-key derivation, partial-failure policy completed_items_not_rolled_back, seat requirement for mutations), the read-only claim conflicts with the structured safety signal and could mislead an agent into treating a mutating call as a safe read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is dominated by generic response-formatting boilerplate (never show raw JSON, prefer concise language, suggest next action) that does not help an agent select or invoke the tool. The one substantive fact about the tool is buried after a tautological opening line.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 18 parameters, nested objects, and an output schema present, the description should at minimum state purpose, prerequisites, and key parameter meanings. Instead it supplies policy boilerplate and omits the operation's actual effect, leaving the definition inadequate for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 18 parameters, and the description only touches three of them (idempotencyKey, seatId, seatName). Core inputs such as taskId, reason, marketContext, and the various locale fields are left entirely undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"retry task" is a verbatim restatement of the tool name and title, with no elaboration on what retrying means or what state it produces. The remaining boilerplate (classification, execution, mutation modes) describes policy, not the tool's purpose, and nothing distinguishes it from siblings like get_task, cancel_task, or list_tasks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to retry a task versus inspecting it with get_task, listing it with list_tasks, or cancelling it. The only usage-adjacent content is a prerequisite for writes (seatId/seatName on a multi-seat call), which is a constraint rather than a when-to-use rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revise_creativeRevise an existing saved Studio creative by executing a requested change from plain-language instructions. Use this directly when the user supplies a creativeId and asks to change copy, imagery, layout, colours, typography, CTA, branding, or any other editable creative element: do not respond with a copy-paste instruction or ask the user to make the edit in Studio. The revision saves to Studio by default and returns fresh preview links plus QA/certification context; set dryRun only when the user explicitly asks for an unsaved preview.A
Idempotent
Inspect

Revise an existing saved Studio creative by executing a requested change from plain-language instructions. Use this directly when the user supplies a creativeId and asks to change copy, imagery, layout, colours, typography, CTA, branding, or any other editable creative element: do not respond with a copy-paste instruction or ask the user to make the edit in Studio. The revision saves to Studio by default and returns fresh preview links plus QA/certification context; set dryRun only when the user explicitly asks for an unsaved preview.. Classification: creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
dryRunNo
promptNo
seatIdNo
seatNameNo
accountIdNo
approvalIdNo
creativeIdYes
persistenceNo
instructionsNo
saveToStudioNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare a non-read-only, idempotent, non-destructive, closed-world mutation. The description goes well beyond that: billable AI usage, durable execution, mutation modes (validate_only/preview_only/execute), a partial-failure policy of completed_items_not_rolled_back, automatic deterministic idempotency-key derivation on omission, and the hard rule that a write requires seatId/seatName on the exact call rather than a remembered seat. That is substantive operational disclosure an agent cannot get from 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and usage rules are correctly front-loaded, but the text then appends a large block of generic response-formatting directives (assistantSummary, never display raw JSON, prefer human language) that reads as system-prompt boilerplate rather than tool-specific documentation. The title text is also duplicated verbatim into the description, including a stray double period, adding dead weight.

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 24-parameter billing mutation with a published output schema, the description covers the operationally decisive facts: that it bills, that execution is durable and not rolled back on partial failure, that it saves by default and returns preview links plus QA context, and that writes need an explicit seat. The main omission is version-conflict expectations around expectedVersion.

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% across 24 parameters, so the description must carry the load. It does explain the semantics of dryRun, the save-by-default behaviour, idempotencyKey derivation, and the seatId/seatName write requirement, but it leaves the highest-traffic inputs undocumented: prompt vs instructions, persistence vs saveToStudio, expectedVersion concurrency semantics, and the whole locale/market group.

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 opening sentence gives a precise verb+resource+scope ('Revise an existing saved Studio creative by executing a requested change') and enumerates what is editable (copy, imagery, layout, colours, typography, CTA, branding). It is unmistakably a revision-in-place tool rather than a build/clone tool, though it never names the adjacent siblings (create_creative_version, clone_creative, restore_creative_version) that an agent might otherwise reach for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger ('use this directly when the user supplies a creativeId and asks to change...'), an explicit anti-pattern ('do not respond with a copy-paste instruction or ask the user to make the edit in Studio'), and a narrow condition for dryRun ('only when the user explicitly asks for an unsaved preview'). The only gap is that alternative tools are not named or contrasted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_competitor_intelligenceRun canonical LeanrIQ Competitor Intelligence V2 for one advertiser-scoped competitor. Defaults match Studio: 90-day DISPLAY evidence and no mixed social/video banner inference. Without forceRefresh, an existing canonical result is reused when available.A
Idempotent
Inspect

Run canonical LeanrIQ Competitor Intelligence V2 for one advertiser-scoped competitor. Defaults match Studio: 90-day DISPLAY evidence and no mixed social/video banner inference. Without forceRefresh, an existing canonical result is reused when available.. Classification: creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work.

NameRequiredDescriptionDefault
nameNo
limitNo
domainNo
marketNo
regionNo
seatIdNo
marketsNo
websiteNo
seatNameNo
brandNameNo
advertiserIdNo
competitorIdNo
evidenceModeNoDISPLAY
forceRefreshNo
lookbackDaysNo
sourceLocaleNo
strategyModeNoBOTH
targetMarketNo
contentLocaleNo
evidenceLimitNo
marketContextNo
strategyModesNo
targetMarketsNo
competitorNameNo
contentLocalesNo
competitorDomainNo
competitorWebsiteNo
recommendationModeNoFULL
defaultContentLocaleNo
competitorKeyMessagesNo
competitorPositioningNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo
advertiserGuidanceSnapshotNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover readOnly/idempotent/destructive/openWorld, but the description adds billable-AI-usage classification, durable execution, optional task support, the three mutation modes, and a partial-failure policy ("completed_items_not_rolled_back") that tells the agent what is NOT undone on failure. The idempotency-key derivation note also explains retry behavior concretely, well beyond what the annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is properly front-loaded and the behavioral metadata is informative, but the block is dense boilerplate that repeats the title verbatim and includes generic output-style guidance likely shared across tools. There is also a doubled period ("available.."), a minor polish issue.

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?

An output schema exists, so return-value explanation is not required, and the assistantSummary/raw-JSON guidance is a useful addition. But for a 37-parameter, zero-required tool with nested objects, the description leaves an agent unable to tell which identity and scoping parameters to supply, which is a meaningful completeness gap.

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 0% across 37 parameters, so the description carries the full burden — and it only clarifies two of them (forceRefresh reuse semantics and the 90-day DISPLAY evidence default). Nothing explains how to identify the target competitor (competitorId vs competitorDomain vs competitorName/website), which market/region/markets fields to use, or what locales, strategyModes, or recommendationMode mean.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Run canonical LeanrIQ Competitor Intelligence V2") and a precise scope ("one advertiser-scoped competitor"), which is distinguishable from the read-style sibling get_competitor_intelligence. However, it never explicitly names that sibling or explains the run-vs-get relationship, so the differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one real usage cue: "Without forceRefresh, an existing canonical result is reused when available," which tells the agent when regeneration is needed. But it never names alternatives (get_competitor_intelligence, list_competitor_evidence, leanriq_get_competitor_creative_intelligence) or states when to pick this tool over them, and the listed mutation modes (validate_only, preview_only, execute) come with no guidance on when to use each.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_creative_chainrun creative chainB
Idempotent
Inspect

run creative chain. Classification: writes to Studio, creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
KPINo
goalNo
toneNo
brandNo
forceNo
offerNo
budgetNo
seatIdNo
channelNo
endDateNo
productNo
audienceNo
buildAdsNo
seatNameNo
accountIdNo
mustAvoidNo
objectiveNo
startDateNo
campaignIdNo
creativeIdNo
constraintsNo
creativeIdsNo
funnelStageNo
mustIncludeNo
targetSizesNo
advertiserIdNo
campaignNameNo
deliverablesNo
saveToStudioNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnlyHint=false, idempotentHint=true, destructiveHint=false, but the description goes well beyond them: billable AI usage, durable execution, optional task support, the partial-failure policy (completed_items_not_rolled_back), deterministic idempotency-key derivation on replay, and the multi-seat write requirement. This is unusually rich behavioral disclosure with no contradiction of 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The labeled structure (Classification, Execution, Task support, Mutation modes, Partial failure policy) is front-loaded and scannable, but the first sentence is pure waste and the four-sentence response-formatting paragraph is largely generic boilerplate for an agent-facing tool. Net length is defensible but not tight.

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?

Output schema exists, so return values need not be described (the description covers response handling anyway). However, for a 42-parameter, zero-coverage, nested-object mutation tool, the near-total absence of input parameter guidance is a serious completeness gap. Annotations cover the safety profile but not the calling contract.

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?

42 parameters at 0% schema description coverage means the description carries the full burden, yet it only explains idempotencyKey and seatId/seatName semantics. The core inputs (KPI, goal, tone, brand, offer, budget, audience, deliverables, locale/market fields) are entirely undefined in both schema and description, leaving most of the surface opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence 'run creative chain' is a tautological restatement of the name and never explains what a 'creative chain' actually is. The 'Classification' line adds real substance (writes to Studio, creates billable AI usage), but the description never distinguishes this tool from near-neighbors like launch_creative_campaign or run_creative_intelligence. Purpose is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It supplies conditional invocation guidance — mutation modes (validate_only, preview_only, execute) and the rule that seatId/seatName must be passed on the exact call when more than one seat is authorised — but none of these map to a parameter in the schema and there is no explicit statement of when to choose this tool over its siblings. Usage is implied, not directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_creative_intelligenceSynthesize grounded, deduplicated advertiser creative opportunities from automatic competitor/category research and broad World signals. Returns a durable run ID and honest partial states; creates no campaign or publication.A
Idempotent
Inspect

Synthesize grounded, deduplicated advertiser creative opportunities from automatic competitor/category research and broad World signals. Returns a durable run ID and honest partial states; creates no campaign or publication.. Classification: creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
seatIdNo
seatNameNo
advertiserIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only give readOnly/openWorld/idempotent/destructive hints; the description adds a wealth of tool-specific behavior: it creates billable AI usage, execution is durable, task support is optional, partial failures follow completed_items_not_rolled_back, and the idempotency key is deterministically derived if omitted. The seat-on-the-exact-call rule for writes is a concrete operational constraint the annotations do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, which is good, but the opening sentence exactly duplicates the title, and the body is a dense run-on of metadata plus generic response-style boilerplate (never display raw JSON, use assistantSummary first) not specific to this tool. Much of it earns its place, but there is real 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?

An output schema exists so return values need no prose, and the description does note the durable run ID and honest partial states. For a complex 16-parameter, nested-schema mutation though, the near-total absence of per-parameter meaning leaves the definition incomplete for correct invocation beyond the two required/seat parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 16 parameters, so the description must carry semantics; it meaningfully explains idempotencyKey (derived retry key if omitted) and seatId/seatName (must be supplied on the write call, prior selection insufficient). But advertiserId, targetMarket(s), locale parameters, and marketContext receive no explanation at all, leaving most of the surface 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 first sentence states a specific verb (synthesize), resource (advertiser creative opportunities) and inputs (competitor/category research + World signals), and 'creates no campaign or publication' implicitly distances it from build_campaign/build_ad. However it never names the nearest siblings (run_competitor_intelligence, run_world_intelligence, run_creative_chain, create_creative_intelligence_plan), so an agent cannot fully disambiguate from those without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It exposes mutation modes (validate_only, preview_only, execute) and the seat requirement for writes, which is invocation guidance. But it never says when to choose this tool over run_creative_chain, run_competitor_intelligence, or create_creative_intelligence_plan, and there are no explicit exclusions, so usage remains implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_world_intelligenceRun bounded, current World Intelligence for one authorised advertiser. It returns source-backed external context and creative opportunities; evidence may be partial and it never publishes or activates creative.B
Idempotent
Inspect

Run bounded, current World Intelligence for one authorised advertiser. It returns source-backed external context and creative opportunities; evidence may be partial and it never publishes or activates creative.. Classification: creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: preserve_qualified_evidence_and_signals. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
policyNo
seatIdNo
routineNo
seatNameNo
routineIdNo
advertiserIdNo
forceRefreshNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
lookbackHoursNo
marketContextNo
targetMarketsNo
contentLocalesNo
advertiserContextNo
defaultContentLocaleNo
researchInstructionsNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Strong added context beyond the annotations: billable usage, durable execution, validate_only/preview_only/execute modes, a partial-failure policy (preserve_qualified_evidence_and_signals), and deterministic idempotency-key derivation on replay. However, the tool performs external web research (maxSearches, allowedSourceDomains, 'source-backed external context') while annotations declare openWorldHint=false, which misdescribes the tool's interaction model and could cause an agent to under-estimate cost or external side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences are well front-loaded and earn their place, but the rest drifts into execution-classification metadata and a long block of UI-rendering instructions ('Never display raw JSON...') that belong in a system prompt, plus a doubled period in 'creative..'. Roughly half the text is not about tool selection or invocation.

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?

Return-value explanation is unnecessary because an output schema exists and the description correctly points at assistantSummary as the entry field, and the annotations plus prose cover cost, idempotency, and failure behaviour. For a research-run tool of this shape, an agent has enough to call it safely even without per-parameter documentation.

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 0% across 22 top-level parameters, including large nested objects (policy, routine, advertiserContext, researchInstructions, marketContext) that the description never explains. The only parameter-level meaning added is the seatId/seatName write requirement and idempotencyKey handling — and idempotencyKey is not even present in the input schema, while advertiserId is described as required by the prose but is optional in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening states a specific verb and resource ('Run bounded, current World Intelligence') plus the output ('source-backed external context and creative opportunities') and the negative scope ('never publishes or activates creative'). That lets an agent distinguish it from the read-side siblings (get_world_intelligence, get_world_opportunity), though it never names those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives response-handling guidance ('Use assistantSummary first', 'Mention IDs only when useful') and a hard precondition for writes (seatId/seatName must be supplied on the exact call when multiple seats are authorised), but it never says when to choose this over leanriq_run_world_intelligence, build_world_research_profile, or run_creative_intelligence, and gives no when-not-to-use criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_world_opportunity_for_campaignExplicitly select one reviewed, source-provenanced World Intelligence opportunity for an authorised Studio campaign. Studio performs the same campaign authorization, scoped LeanrIQ lookup, and persistence path as the UI. This does not materialise a feed, create creative, traffic, or publish.A
Idempotent
Inspect

Explicitly select one reviewed, source-provenanced World Intelligence opportunity for an authorised Studio campaign. Studio performs the same campaign authorization, scoped LeanrIQ lookup, and persistence path as the UI. This does not materialise a feed, create creative, traffic, or publish.. Classification: writes to Studio. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
dryRunNo
seatIdNo
seatNameNo
accountIdNo
approvalIdNo
campaignIdYes
advertiserIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
opportunityIdYes
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/destructive/openWorld, but the description adds substantial context beyond them: mutation modes (validate_only/preview_only/execute), synchronous execution, task support forbidden, partial-failure policy (completed_items_not_rolled_back), and deterministic idempotency-key derivation on omission. That is meaningful behavioral disclosure for a write tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and mutation semantics are front-loaded, but the text is padded with generic orchestration boilerplate ('Use assistantSummary first... Never display raw JSON... Prefer concise, human language') that is not specific to this tool, and it contains a doubled period ('publish..'). Several sentences do earn their place, several do not.

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?

An output schema exists, so return values need not be explained, and the mutation/write behavior is well covered. However, for a 22-parameter write tool with 0% schema coverage and nested objects, the description leaves the parameter surface largely unexplained, which is a real completeness gap.

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 0% across 22 parameters, so the description carries the full burden, yet it only explains semantics for idempotencyKey (derived retry key) and seatId/seatName (mandatory on the call). The other ~19 parameters, including required advertiserId/campaignId/opportunityId, get no added 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?

States a specific verb (select) and resource (one reviewed, source-provenanced World Intelligence opportunity) scoped to an authorised Studio campaign. It also names what it does NOT do (materialise a feed, create creative, traffic, publish), which cleanly separates it from siblings like list_world_opportunities and get_world_opportunity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the purpose ('select one opportunity for a campaign'), and it adds a real condition (seatId/seatName required on this exact call when more than one seat is authorised). But it never names an alternative tool or an explicit when-not-to-use, leaving routing largely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

traffick_creativetraffick creativeC
Idempotent
Inspect

traffick creative. Classification: publishes externally. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
forceNo
dryRunNo
seatIdNo
flightIdYes
seatNameNo
accountIdYes
approvalIdNo
creativeIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond annotations: classification (publishes externally), durability, mutation modes, and a partial-failure policy of completed_items_not_rolled_back — that last point is genuinely valuable since destructiveHint=false might otherwise mislead. Also explains idempotency key derivation and the multi-seat authorization requirement for writes. Missing only success/failure semantics and required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The operational metadata (classification, execution, mutation modes, failure policy) is front-loaded and useful, but a large middle block is generic response-formatting boilerplate about assistantSummary and never displaying raw JSON — that applies to every tool and doesn't belong in this definition. About half the text is non-tool-specific.

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 21-parameter, externally-publishing mutation with nested objects and an output schema, the description is too thin on the actual operation. It never states what trafficking creates or changes, prerequisites (e.g., creative must be approved, flight must exist), or the meaning of dryRun/force/approvalId. Output schema and annotations cover return shape and safety hints, but the core semantics are absent.

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 the description carries the burden. It clarifies idempotencyKey derivation and seatId/seatName requirements on writes, which is helpful. But it says nothing about the 18 other parameters — accountId, flightId, creativeId (the required trio), targetMarket(s), locale fields, force, dryRun, approvalId, marketContext — leaving the agent to guess at their meaning and relationships.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'traffick creative', which is essentially a restatement of the tool name. It never explains what trafficking a creative actually does (e.g., associates a creative with a flight/campaign for delivery). The agent must infer intent from siblings like traffick_flight and retraffick_creative.

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 statement of when to use this versus preview_trafficking_output, traffick_flight, or retraffick_creative. Mutation modes (validate_only, preview_only, execute) hint at a preview capability but don't clarify when to choose each or how they relate to dryRun/force.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

traffick_flighttraffick flightB
Idempotent
Inspect

traffick flight. Classification: publishes externally. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
forceNo
dryRunNo
seatIdNo
flightIdYes
seatNameNo
accountIdYes
approvalIdNo
creativeIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

B3.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (mutation, open-world, idempotent, non-destructive), the description adds real operational detail: durable execution, optional task support, a partial-failure policy of 'completed_items_not_rolled_back', deterministic idempotency-key derivation on replay, and the requirement to pass seatId/seatName on the exact mutation call when multiple seats are authorized. These are non-obvious behaviors an agent could not infer from structured fields alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The metadata fields are front-loaded and readable, but the description mixes tool behavior with ChatGPT presentation instructions ('Never display raw JSON... suggest the next best LeanrIQ action'), which is verbose boilerplate relative to the tool's own contract. For a 21-param mutation some length is justified, but several sentences do not describe the tool itself.

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?

An output schema exists, so return values needn't be explained, and the description does cover idempotency, seat authorization, partial-failure handling, and mutation modes. However, it leaves the core purpose of 'trafficking' and nearly all of the 21 parameters unexplained, so an agent has behavioral context but not enough to invoke the tool confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 21 parameters and 0% schema description coverage, the description carries the full burden but explains only idempotencyKey (auto-derivation) and seatId/seatName (must be supplied on the write). The remaining ~18 parameters - flightId, creativeId, approvalId, locale/market fields, marketContext, force, dryRun, etc. - get no meaning, format, or constraint explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens by restating the tool name ('traffick flight') and only obliquely conveys the action via 'Classification: publishes externally'. That hints at publishing the flight externally, but the purpose is buried in metadata fields rather than stated as a clear verb+resource. It does not distinguish itself from close siblings such as validate_flight, preview_trafficking_output, retraffick_flight, or push_flight_to_yahoo.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through 'Mutation modes: validate_only, preview_only, execute' and the seat prerequisite, but the description never says when to choose this tool over validate_flight, preview_trafficking_output, or retraffick_flight. The bulk of the text is assistant-response guidance rather than tool-selection guidance, so the agent must infer the right context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_advertiserupdate advertiserC
Idempotent
Inspect

update advertiser. Classification: writes to Studio. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
patchYes
dryRunNo
seatIdNo
seatNameNo
accountIdYes
approvalIdNo
advertiserIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial traits beyond the annotations: synchronous execution, task support forbidden (so no async polling), the validate_only/preview_only/execute mutation modes, and a partial failure policy of completed_items_not_rolled_back, which materially changes retry behaviour. Annotations already cover idempotency and safety, but this extra context is genuinely useful; it stops short of saying what a partial failure looks like in the response or which fields require elevated permissions.

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?

Front-loaded with classification and mutation metadata, which is good, but roughly half the text is response-formatting boilerplate (use assistantSummary, never display raw JSON, mention IDs only when useful) that is generic across the toolset rather than specific to updating an advertiser. Nothing is redundant sentence-to-sentence, but the payload-to-boilerplate ratio is poor.

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 21-parameter mutation with a nested patch object this is under-specified: the description never explains what patch does, how dryRun relates to validate_only, or how expectedVersion conflicts surface. The presence of an output schema excuses it from describing return values, but not from the parameter and semantics 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?

Schema description coverage is 0% across 21 parameters, so the description must carry the burden and largely does not. It explains only idempotencyKey and seatId/seatName; patch contents, advertiserId/accountId scoping, dryRun, expectedVersion optimistic concurrency, approvalId, and the market/locale parameters are all left undefined.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"update advertiser. Classification: writes to Studio." restates the tool name and title without naming a single updatable field or the resource scope. Nothing distinguishes it from update_campaign, update_flight, or archive_advertiser beyond the word "update".

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?

Gives real invocation prerequisites: seatId or seatName must be supplied on this exact call when more than one seat is authorised, and idempotencyKey may be omitted because a deterministic retry key is derived. It never says when to choose this over update_campaign/archive_advertiser or when a mutation should be run as validate_only vs execute, so selection guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_campaignUpdate a Studio campaign. Use the canonical campaign fields inside patch, including campaignName, funnelStage, targetImpressions, primaryKpi, and secondaryKpi when those values are being changed.A
Idempotent
Inspect

Update a Studio campaign. Use the canonical campaign fields inside patch, including campaignName, funnelStage, targetImpressions, primaryKpi, and secondaryKpi when those values are being changed.. Classification: writes to Studio. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
patchYes
dryRunNo
seatIdNo
seatNameNo
accountIdYes
approvalIdNo
campaignIdYes
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond the annotations: write classification, synchronous execution, task support forbidden, the validate_only/preview_only/execute mutation modes, and a partial-failure policy (completed_items_not_rolled_back). The idempotency and seat-selection notes also reinforce the idempotentHint annotation rather than contradicting it. It loses a point for the generic response-formatting boilerplate, which is orchestration guidance rather than tool behavior.

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?

Purpose is front-loaded in the first sentence, but the body is bloated with repeated generic boilerplate about not displaying raw JSON and suggesting next actions. Several sentences are padding that do not help select or invoke this specific tool.

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 21-parameter write tool with an output schema, the description covers the critical invocation risks: mutation modes, idempotency, seat authorisation, and partial-failure semantics. Gaps remain around dryRun vs validate_only, expectedVersion concurrency control, and approvalId, but overall it is sufficient to call safely.

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% across 21 parameters, so the description carries the full burden; it names only five patch fields (campaignName, funnelStage, targetImpressions, primaryKpi, secondaryKpi) and ignores the rest of the patch object plus accountId, campaignId, dryRun, expectedVersion, approvalId, and the locale/market parameters. Useful but far from compensating for a 0% coverage schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Update a Studio campaign") and the title names the canonical patch fields. It is clearly distinguishable from create_campaign or archive_campaign, but it never explicitly contrasts itself with sibling update tools such as update_flight or update_advertiser.

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?

Gives concrete usage guidance for the call itself — put canonical fields inside patch, supply seatId/seatName on multi-seat writes, idempotencyKey handling — but gives no when-to-use/when-not-to-use routing relative to siblings like clone_creative, archive_campaign, or create_campaign.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_flightupdate flightC
Idempotent
Inspect

update flight. Classification: writes to Studio. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

NameRequiredDescriptionDefault
nameNo
dryRunNo
seatIdNo
flightIdYes
platformNo
seatNameNo
accountIdNo
approvalIdNo
campaignIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyNo
thirdPartyTagsNo
creativeConfigsNo
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), and the description usefully adds traits beyond them: the partial-failure policy (completed_items_not_rolled_back), the deterministic idempotency-key derivation for accidental replays, and the requirement that seatId/seatName be passed on the exact mutation call rather than remembered. These are genuinely valuable operational details for a write tool.

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?

It is labeled and organized, but a large fraction is generic response-formatting boilerplate ("Never display raw JSON", "suggest the next best LeanrIQ action") that applies to any tool and is front-loaded with a tautological opening line. The tool-specific content is buried among orchestration instructions.

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 26-parameter mutation with nested objects, the description omits what is actually being updated, how expectedVersion interacts with updates, and the semantics of the vast majority of fields. The output schema exists so return values needn't be described, but the write-behavior coverage is too thin for a tool of this complexity.

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 26 parameters at 0% schema description coverage, the description carries the full burden, yet it only explains idempotencyKey and seatId/seatName. The other ~23 parameters (dryRun, expectedVersion, creativeConfigs, marketContext, locales, etc.) get no semantic explanation, leaving the agent to guess their meaning and interaction.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"update flight" merely restates the tool name/title; it doesn't say what fields are updatable or the scope of the update. "Classification: writes to Studio" is the only descriptive content, and it duplicates what readOnlyHint=false already tells the agent. It does nothing to distinguish this from update_campaign, update_advertiser, validate_flight, or delete_flight.

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 mutation modes (validate_only, preview_only, execute) hint at how to invoke it but give no guidance on when to choose update_flight over siblings like validate_flight, retraffick_flight, or create_flight. The seat rule is a prerequisite, not when-to-use guidance, and there are no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_flightvalidate flightC
Read-onlyIdempotent
Inspect

validate flight. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.

NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdNo
flightIdYes
seatNameNo
accountIdNo
previewIdNo
campaignIdNo
creativeIdNo
templateIdNo
advertiserIdNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/destructiveHint/idempotentHint, so repeating "Classification: read-only" adds nothing. However, the description does add real behavioral context beyond the structured fields: synchronous execution, task support forbidden, and that the returned JSON is internal orchestration state that should be summarized via assistantSummary rather than shown raw.

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?

It is compact and front-loaded, but the opening restatement of the name is waste and the bulk is generic response-formatting boilerplate that could apply to any tool. Structure is fine; the content is not evenly earning its place.

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?

An output schema exists so return values need not be explained, but for a 23-parameter tool with nested objects the description supplies no parameter guidance and no usage context. What remains is output-display policy, leaving the agent under-informed about how to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

23 parameters at 0% schema description coverage, with a nested marketContext/targetMarkets structure, and the description explains none of them. The single generic reference to "IDs" does not compensate for the coverage gap, so an agent gets no help distinguishing flightId from seatId, assetId, campaignId, etc.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"validate flight" merely restates the tool name and title; it never says what validation actually checks or what a valid vs invalid flight means. Among siblings (get_flight, create_flight, update_flight, retraffick_flight, delete_flight) there is no distinguishing detail. This is effectively a tautology.

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?

Nothing states when to invoke validate_flight versus its many flight-related siblings, nor any prerequisites or conditions. The only 'when' content ("when responding to the user") concerns output formatting, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedget_brand_profile1 field changed
      • addedInput schema / properties / competitorLimit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "const": 5,
        +      "type": "number"
        +    },
        +    {
        +      "const": 8,
        +      "type": "number"
        +    }
        +  ]
        +}
    • Changedleanriq_get_brand_profile1 field changed
      • addedInput schema / properties / competitorLimit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "const": 5,
        +      "type": "number"
        +    },
        +    {
        +      "const": 8,
        +      "type": "number"
        +    }
        +  ]
        +}
    • Changedrefresh_brand_profile1 field changed
      • addedInput schema / properties / competitorLimit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "const": 5,
        +      "type": "number"
        +    },
        +    {
        +      "const": 8,
        +      "type": "number"
        +    }
        +  ]
        +}
  2. 2 tool updates
    • Changedleanriq_run_world_intelligence3 fields changed
      • changedInput schema / properties / policy / properties / researchBudget / properties / maxModelCalls / default
        Previous value: -8New value: +12
      • changedInput schema / properties / policy / properties / researchBudget / properties / maxSearches / default
        Previous value: -6New value: +10
      • addedInput schema / properties / policy / properties / sourceCountries
        Added value: +{
        +  "items": {
        +    "enum": [
        +      "GB",
        +      "US",
        +      "HK"
        +    ],
        +    "type": "string"
        +  },
        +  "maxItems": 3,
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedrun_world_intelligence3 fields changed
      • changedInput schema / properties / policy / properties / researchBudget / properties / maxModelCalls / default
        Previous value: -8New value: +12
      • changedInput schema / properties / policy / properties / researchBudget / properties / maxSearches / default
        Previous value: -6New value: +10
      • addedInput schema / properties / policy / properties / sourceCountries
        Added value: +{
        +  "items": {
        +    "enum": [
        +      "GB",
        +      "US",
        +      "HK"
        +    ],
        +    "type": "string"
        +  },
        +  "maxItems": 3,
        +  "minItems": 1,
        +  "type": "array"
        +}
  3. 3 tool updates
    • Changedbuild_dooh9 fields changed
      • addedInput schema / properties / approvedCopyVariants
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "body": {
        +        "type": "string"
        +      },
        +      "claimReferences": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "cta": {
        +        "type": "string"
        +      },
        +      "eyebrow": {
        +        "type": "string"
        +      },
        +      "headline": {
        +        "type": "string"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "legal": {
        +        "type": "string"
        +      },
        +      "proof": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
      • addedInput schema / properties / assets / properties / images / items / properties / alphaPadding
        Added value: +{
        +  "properties": {
        +    "bottom": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "left": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "right": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "top": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "left",
        +    "right",
        +    "top",
        +    "bottom"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / assets / properties / images / items / properties / visibleBounds
        Added value: +{
        +  "properties": {
        +    "height": {
        +      "exclusiveMinimum": 0,
        +      "maximum": 1,
        +      "type": "number"
        +    },
        +    "width": {
        +      "exclusiveMinimum": 0,
        +      "maximum": 1,
        +      "type": "number"
        +    },
        +    "x": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "y": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "y",
        +    "width",
        +    "height"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / assets / properties / logos / items / properties / alphaPadding
        Added value: +{
        +  "properties": {
        +    "bottom": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "left": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "right": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "top": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "left",
        +    "right",
        +    "top",
        +    "bottom"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / assets / properties / logos / items / properties / visibleBounds
        Added value: +{
        +  "properties": {
        +    "height": {
        +      "exclusiveMinimum": 0,
        +      "maximum": 1,
        +      "type": "number"
        +    },
        +    "width": {
        +      "exclusiveMinimum": 0,
        +      "maximum": 1,
        +      "type": "number"
        +    },
        +    "x": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "y": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "y",
        +    "width",
        +    "height"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / copy / properties / approvedCopyVariants
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "body": {
        +        "type": "string"
        +      },
        +      "claimReferences": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "cta": {
        +        "type": "string"
        +      },
        +      "eyebrow": {
        +        "type": "string"
        +      },
        +      "headline": {
        +        "type": "string"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "legal": {
        +        "type": "string"
        +      },
        +      "proof": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
      • addedInput schema / properties / copy / properties / legal
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / copyPolicy
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "editableRoles": {
        +      "items": {
        +        "enum": [
        +          "headline",
        +          "body",
        +          "cta",
        +          "legal",
        +          "eyebrow",
        +          "proof"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "lockedRoles": {
        +      "items": {
        +        "enum": [
        +          "headline",
        +          "body",
        +          "cta",
        +          "legal",
        +          "eyebrow",
        +          "proof"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "requiredRoles": {
        +      "items": {
        +        "enum": [
        +          "headline",
        +          "body",
        +          "cta",
        +          "legal",
        +          "eyebrow",
        +          "proof"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / designEvidenceContext
        Added value: +{
        +  "properties": {
        +    "brand": {
        +      "properties": {
        +        "constraints": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "tokens": {
        +          "additionalProperties": {},
        +          "propertyNames": {
        +            "type": "string"
        +          },
        +          "type": "object"
        +        },
        +        "version": {
        +          "anyOf": [
        +            {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "number"
        +                }
        +              ]
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "campaign": {
        +      "properties": {
        +        "audience": {},
        +        "objective": {},
        +        "proposition": {}
        +      },
        +      "type": "object"
        +    },
        +    "copy": {
        +      "properties": {
        +        "approvedCopyVariants": {},
        +        "body": {},
        +        "claimReferences": {},
        +        "claims": {},
        +        "copyPolicy": {},
        +        "cta": {},
        +        "disclaimer": {},
        +        "eyebrow": {},
        +        "headline": {},
        +        "legal": {},
        +        "lockedTexts": {},
        +        "mandatoryElements": {},
        +        "supportingCopy": {}
        +      },
        +      "type": "object"
        +    },
        +    "craftPrecedents": {
        +      "default": [],
        +      "items": {
        +        "additionalProperties": {},
        +        "default": null,
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "facts": {
        +      "default": [],
        +      "items": {
        +        "default": null,
        +        "properties": {
        +          "authority": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "capturedAt": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "evidenceId": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "extractedFacts": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "observedAt": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "publishedAt": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "sourceId": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "sourceRef": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "sourceType": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "sourceUrl": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "statement": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "summary": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "title": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "locale": {
        +      "type": "string"
        +    },
        +    "opportunity": {
        +      "anyOf": [
        +        {
        +          "properties": {
        +            "audienceContext": {
        +              "type": "string"
        +            },
        +            "evidenceIds": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "evidenceSupport": {
        +              "items": {
        +                "properties": {
        +                  "evidenceId": {
        +                    "type": "string"
        +                  },
        +                  "quote": {
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "evidenceId",
        +                  "quote"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "measurableHypothesis": {},
        +            "messagingTerritory": {
        +              "type": "string"
        +            },
        +            "objective": {
        +              "type": "string"
        +            },
        +            "proposedMessage": {
        +              "type": "string"
        +            },
        +            "reviewAt": {
        +              "type": "string"
        +            },
        +            "supportingEvidenceIds": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "title": {
        +              "type": "string"
        +            },
        +            "visualDirection": {
        +              "type": "string"
        +            },
        +            "visualTerritory": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "schemaVersion": {
        +      "const": "design-evidence-context-v1",
        +      "type": "string"
        +    },
        +    "scope": {
        +      "properties": {
        +        "advertiserId": {
        +          "type": "string"
        +        },
        +        "tenantId": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "schemaVersion"
        +  ],
        +  "type": "object"
        +}
    • Changedbuild_videoad6 fields changed
      • addedInput schema / properties / approvedCopyVariants
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "body": {
        +        "type": "string"
        +      },
        +      "claimReferences": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "cta": {
        +        "type": "string"
        +      },
        +      "eyebrow": {
        +        "type": "string"
        +      },
        +      "headline": {
        +        "type": "string"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "legal": {
        +        "type": "string"
        +      },
        +      "proof": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
      • addedInput schema / properties / copyPolicy
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "editableRoles": {
        +      "items": {
        +        "enum": [
        +          "headline",
        +          "body",
        +          "cta",
        +          "legal",
        +          "eyebrow",
        +          "proof"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "lockedRoles": {
        +      "items": {
        +        "enum": [
        +          "headline",
        +          "body",
        +          "cta",
        +          "legal",
        +          "eyebrow",
        +          "proof"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "requiredRoles": {
        +      "items": {
        +        "enum": [
        +          "headline",
        +          "body",
        +          "cta",
        +          "legal",
        +          "eyebrow",
        +          "proof"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / designEvidenceContext
        Added value: +{
        +  "properties": {
        +    "brand": {
        +      "properties": {
        +        "constraints": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "tokens": {
        +          "additionalProperties": {},
        +          "propertyNames": {
        +            "type": "string"
        +          },
        +          "type": "object"
        +        },
        +        "version": {
        +          "anyOf": [
        +            {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "number"
        +                }
        +              ]
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "campaign": {
        +      "properties": {
        +        "audience": {},
        +        "objective": {},
        +        "proposition": {}
        +      },
        +      "type": "object"
        +    },
        +    "copy": {
        +      "properties": {
        +        "approvedCopyVariants": {},
        +        "body": {},
        +        "claimReferences": {},
        +        "claims": {},
        +        "copyPolicy": {},
        +        "cta": {},
        +        "disclaimer": {},
        +        "eyebrow": {},
        +        "headline": {},
        +        "legal": {},
        +        "lockedTexts": {},
        +        "mandatoryElements": {},
        +        "supportingCopy": {}
        +      },
        +      "type": "object"
        +    },
        +    "craftPrecedents": {
        +      "default": [],
        +      "items": {
        +        "additionalProperties": {},
        +        "default": null,
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "facts": {
        +      "default": [],
        +      "items": {
        +        "default": null,
        +        "properties": {
        +          "authority": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "capturedAt": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "evidenceId": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "extractedFacts": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "observedAt": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "publishedAt": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "sourceId": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "sourceRef": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "sourceType": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "sourceUrl": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "statement": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "summary": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "title": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "locale": {
        +      "type": "string"
        +    },
        +    "opportunity": {
        +      "anyOf": [
        +        {
        +          "properties": {
        +            "audienceContext": {
        +              "type": "string"
        +            },
        +            "evidenceIds": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "evidenceSupport": {
        +              "items": {
        +                "properties": {
        +                  "evidenceId": {
        +                    "type": "string"
        +                  },
        +                  "quote": {
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "evidenceId",
        +                  "quote"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "measurableHypothesis": {},
        +            "messagingTerritory": {
        +              "type": "string"
        +            },
        +            "objective": {
        +              "type": "string"
        +            },
        +            "proposedMessage": {
        +              "type": "string"
        +            },
        +            "reviewAt": {
        +              "type": "string"
        +            },
        +            "supportingEvidenceIds": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "title": {
        +              "type": "string"
        +            },
        +            "visualDirection": {
        +              "type": "string"
        +            },
        +            "visualTerritory": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "schemaVersion": {
        +      "const": "design-evidence-context-v1",
        +      "type": "string"
        +    },
        +    "scope": {
        +      "properties": {
        +        "advertiserId": {
        +          "type": "string"
        +        },
        +        "tenantId": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "schemaVersion"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / lockedSourceChoices
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "assetId": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "clipId": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "digest": {
        +        "pattern": "^sha256:[a-f0-9]{64}$",
        +        "type": "string"
        +      },
        +      "origin": {
        +        "const": "first_presented_frame",
        +        "type": "string"
        +      },
        +      "range": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "in": {
        +            "maximum": 9007199254740991,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "out": {
        +            "maximum": 9007199254740991,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "in",
        +          "out"
        +        ],
        +        "type": "object"
        +      },
        +      "timebase": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "denominator": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 1000000000,
        +            "type": "integer"
        +          },
        +          "numerator": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 1000000000,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "numerator",
        +          "denominator"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "clipId",
        +      "assetId",
        +      "digest",
        +      "timebase",
        +      "origin",
        +      "range"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
      • addedInput schema / properties / shotPlanRequired
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / sourceShotMaps
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "assetId": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "assetVersion": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "audio": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "channels": {
        +            "maximum": 9007199254740991,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "codec": {
        +            "anyOf": [
        +              {
        +                "maxLength": 80,
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "music": {
        +            "const": "unknown",
        +            "type": "string"
        +          },
        +          "present": {
        +            "type": "boolean"
        +          },
        +          "sampleRate": {
        +            "maximum": 9007199254740991,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "speech": {
        +            "const": "unknown",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "present",
        +          "codec",
        +          "channels",
        +          "sampleRate",
        +          "speech",
        +          "music"
        +        ],
        +        "type": "object"
        +      },
        +      "coverage": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "boundaryToleranceTicks": {
        +            "maximum": 9007199254740991,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "complete": {
        +            "type": "boolean"
        +          },
        +          "in": {
        +            "maximum": 9007199254740991,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "method": {
        +            "enum": [
        +              "sampled_scene_change",
        +              "continuous_source"
        +            ],
        +            "type": "string"
        +          },
        +          "out": {
        +            "maximum": 9007199254740991,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "in",
        +          "out",
        +          "complete",
        +          "boundaryToleranceTicks",
        +          "method"
        +        ],
        +        "type": "object"
        +      },
        +      "digest": {
        +        "pattern": "^sha256:[a-f0-9]{64}$",
        +        "type": "string"
        +      },
        +      "durationTicks": {
        +        "maximum": 9007199254740991,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "frameAccurate": {
        +        "type": "boolean"
        +      },
        +      "frames": {
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "digest": {
        +              "pattern": "^sha256:[a-f0-9]{64}$",
        +              "type": "string"
        +            },
        +            "id": {
        +              "maxLength": 240,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "tick": {
        +              "maximum": 9007199254740991,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "url": {
        +              "anyOf": [
        +                {
        +                  "maxLength": 4000,
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "tick",
        +            "digest",
        +            "url"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 3,
        +        "type": "array"
        +      },
        +      "origin": {
        +        "const": "first_presented_frame",
        +        "type": "string"
        +      },
        +      "schemaVersion": {
        +        "const": "video-shot-map-v1",
        +        "type": "string"
        +      },
        +      "scope": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "advertiserId": {
        +            "maxLength": 240,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "channel": {
        +            "enum": [
        +              "video_preroll",
        +              "video_ctv"
        +            ],
        +            "type": "string"
        +          },
        +          "locale": {
        +            "maxLength": 240,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "seatId": {
        +            "maxLength": 240,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "seatId",
        +          "advertiserId",
        +          "locale",
        +          "channel"
        +        ],
        +        "type": "object"
        +      },
        +      "shots": {
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "copyRegions": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "height": {
        +                    "exclusiveMinimum": 0,
        +                    "maximum": 1,
        +                    "type": "number"
        +                  },
        +                  "width": {
        +                    "exclusiveMinimum": 0,
        +                    "maximum": 1,
        +                    "type": "number"
        +                  },
        +                  "x": {
        +                    "maximum": 1,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "y": {
        +                    "maximum": 1,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  }
        +                },
        +                "required": [
        +                  "x",
        +                  "y",
        +                  "width",
        +                  "height"
        +                ],
        +                "type": "object"
        +              },
        +              "maxItems": 4,
        +              "type": "array"
        +            },
        +            "id": {
        +              "maxLength": 240,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "motion": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "camera": {
        +                  "const": "unknown",
        +                  "type": "string"
        +                },
        +                "sampledChange": {
        +                  "enum": [
        +                    "unknown",
        +                    "cut_detected"
        +                  ],
        +                  "type": "string"
        +                },
        +                "subject": {
        +                  "const": "unknown",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "camera",
        +                "subject",
        +                "sampledChange"
        +              ],
        +              "type": "object"
        +            },
        +            "products": {
        +              "items": {
        +                "maxLength": 160,
        +                "type": "string"
        +              },
        +              "maxItems": 8,
        +              "type": "array"
        +            },
        +            "range": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "in": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "out": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "in",
        +                "out"
        +              ],
        +              "type": "object"
        +            },
        +            "representativeFrameIds": {
        +              "items": {
        +                "maxLength": 240,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "maxItems": 3,
        +              "type": "array"
        +            },
        +            "semanticEvidence": {
        +              "enum": [
        +                "unknown",
        +                "digest_bound_analysis"
        +              ],
        +              "type": "string"
        +            },
        +            "subjects": {
        +              "items": {
        +                "maxLength": 160,
        +                "type": "string"
        +              },
        +              "maxItems": 8,
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "range",
        +            "representativeFrameIds",
        +            "subjects",
        +            "products",
        +            "copyRegions",
        +            "semanticEvidence",
        +            "motion"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 16,
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "timebase": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "denominator": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 1000000000,
        +            "type": "integer"
        +          },
        +          "numerator": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 1000000000,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "numerator",
        +          "denominator"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "schemaVersion",
        +      "scope",
        +      "assetId",
        +      "digest",
        +      "assetVersion",
        +      "timebase",
        +      "origin",
        +      "durationTicks",
        +      "frameAccurate",
        +      "coverage",
        +      "frames",
        +      "shots",
        +      "audio"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
    • Changedleanriq_build_dooh9 fields changed
      • addedInput schema / properties / approvedCopyVariants
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "body": {
        +        "type": "string"
        +      },
        +      "claimReferences": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "cta": {
        +        "type": "string"
        +      },
        +      "eyebrow": {
        +        "type": "string"
        +      },
        +      "headline": {
        +        "type": "string"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "legal": {
        +        "type": "string"
        +      },
        +      "proof": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
      • addedInput schema / properties / assets / properties / images / items / properties / alphaPadding
        Added value: +{
        +  "properties": {
        +    "bottom": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "left": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "right": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "top": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "left",
        +    "right",
        +    "top",
        +    "bottom"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / assets / properties / images / items / properties / visibleBounds
        Added value: +{
        +  "properties": {
        +    "height": {
        +      "exclusiveMinimum": 0,
        +      "maximum": 1,
        +      "type": "number"
        +    },
        +    "width": {
        +      "exclusiveMinimum": 0,
        +      "maximum": 1,
        +      "type": "number"
        +    },
        +    "x": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "y": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "y",
        +    "width",
        +    "height"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / assets / properties / logos / items / properties / alphaPadding
        Added value: +{
        +  "properties": {
        +    "bottom": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "left": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "right": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "top": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "left",
        +    "right",
        +    "top",
        +    "bottom"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / assets / properties / logos / items / properties / visibleBounds
        Added value: +{
        +  "properties": {
        +    "height": {
        +      "exclusiveMinimum": 0,
        +      "maximum": 1,
        +      "type": "number"
        +    },
        +    "width": {
        +      "exclusiveMinimum": 0,
        +      "maximum": 1,
        +      "type": "number"
        +    },
        +    "x": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "y": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "y",
        +    "width",
        +    "height"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / copy / properties / approvedCopyVariants
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "body": {
        +        "type": "string"
        +      },
        +      "claimReferences": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "cta": {
        +        "type": "string"
        +      },
        +      "eyebrow": {
        +        "type": "string"
        +      },
        +      "headline": {
        +        "type": "string"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "legal": {
        +        "type": "string"
        +      },
        +      "proof": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
      • addedInput schema / properties / copy / properties / legal
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / copyPolicy
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "editableRoles": {
        +      "items": {
        +        "enum": [
        +          "headline",
        +          "body",
        +          "cta",
        +          "legal",
        +          "eyebrow",
        +          "proof"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "lockedRoles": {
        +      "items": {
        +        "enum": [
        +          "headline",
        +          "body",
        +          "cta",
        +          "legal",
        +          "eyebrow",
        +          "proof"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "requiredRoles": {
        +      "items": {
        +        "enum": [
        +          "headline",
        +          "body",
        +          "cta",
        +          "legal",
        +          "eyebrow",
        +          "proof"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / designEvidenceContext
        Added value: +{
        +  "properties": {
        +    "brand": {
        +      "properties": {
        +        "constraints": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "tokens": {
        +          "additionalProperties": {},
        +          "propertyNames": {
        +            "type": "string"
        +          },
        +          "type": "object"
        +        },
        +        "version": {
        +          "anyOf": [
        +            {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "number"
        +                }
        +              ]
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "campaign": {
        +      "properties": {
        +        "audience": {},
        +        "objective": {},
        +        "proposition": {}
        +      },
        +      "type": "object"
        +    },
        +    "copy": {
        +      "properties": {
        +        "approvedCopyVariants": {},
        +        "body": {},
        +        "claimReferences": {},
        +        "claims": {},
        +        "copyPolicy": {},
        +        "cta": {},
        +        "disclaimer": {},
        +        "eyebrow": {},
        +        "headline": {},
        +        "legal": {},
        +        "lockedTexts": {},
        +        "mandatoryElements": {},
        +        "supportingCopy": {}
        +      },
        +      "type": "object"
        +    },
        +    "craftPrecedents": {
        +      "default": [],
        +      "items": {
        +        "additionalProperties": {},
        +        "default": null,
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "facts": {
        +      "default": [],
        +      "items": {
        +        "default": null,
        +        "properties": {
        +          "authority": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "capturedAt": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "evidenceId": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "extractedFacts": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "observedAt": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "publishedAt": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "sourceId": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "sourceRef": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "sourceType": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "sourceUrl": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "statement": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "summary": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "title": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "locale": {
        +      "type": "string"
        +    },
        +    "opportunity": {
        +      "anyOf": [
        +        {
        +          "properties": {
        +            "audienceContext": {
        +              "type": "string"
        +            },
        +            "evidenceIds": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "evidenceSupport": {
        +              "items": {
        +                "properties": {
        +                  "evidenceId": {
        +                    "type": "string"
        +                  },
        +                  "quote": {
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "evidenceId",
        +                  "quote"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "measurableHypothesis": {},
        +            "messagingTerritory": {
        +              "type": "string"
        +            },
        +            "objective": {
        +              "type": "string"
        +            },
        +            "proposedMessage": {
        +              "type": "string"
        +            },
        +            "reviewAt": {
        +              "type": "string"
        +            },
        +            "supportingEvidenceIds": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "title": {
        +              "type": "string"
        +            },
        +            "visualDirection": {
        +              "type": "string"
        +            },
        +            "visualTerritory": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "schemaVersion": {
        +      "const": "design-evidence-context-v1",
        +      "type": "string"
        +    },
        +    "scope": {
        +      "properties": {
        +        "advertiserId": {
        +          "type": "string"
        +        },
        +        "tenantId": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "schemaVersion"
        +  ],
        +  "type": "object"
        +}
  4. 8 tool updates
    • Addedcreate_creative_intelligence_plan
    • Addedget_creative_intelligence
    • Addedget_creative_intelligence_run
    • Addedleanriq_create_creative_intelligence_plan
    • Addedleanriq_get_creative_intelligence
    • Addedleanriq_get_creative_intelligence_run
    • Addedleanriq_run_creative_intelligence
    • Addedrun_creative_intelligence
  5. 2 tool updates
    • Changedbuild_videoad1 field changed
      • addedInput schema / properties / editorContext
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
    • Changedexport_creative1 field changed
      • addedInput schema / properties / flightId
        Added value: +{
        +  "maxLength": 240,
        +  "minLength": 1,
        +  "type": "string"
        +}
  6. 26 tool updates
    • Addedbuild_world_research_profile
    • Addedget_world_activation_evidence
    • Addedget_world_research_decision
    • Addedget_world_research_event
    • Addedget_world_research_events
    • Addedget_world_research_insights
    • Addedget_world_research_mentions
    • Addedget_world_research_profile
    • Addedget_world_research_proposal
    • Addedget_world_research_question
    • Addedget_world_research_summary
    • Addedleanriq_build_world_research_profile
    • Addedleanriq_get_world_activation_evidence
    • Addedleanriq_get_world_research_decision
    • Addedleanriq_get_world_research_event
    • Addedleanriq_get_world_research_events
    • Addedleanriq_get_world_research_insights
    • Addedleanriq_get_world_research_mentions
    • Addedleanriq_get_world_research_profile
    • Addedleanriq_get_world_research_proposal
    • Addedleanriq_get_world_research_question
    • Addedleanriq_get_world_research_summary
    • Addedleanriq_record_world_research_feedback
    • Changedleanriq_run_world_intelligence19 fields changed
      • addedInput schema / properties / advertiserContext / properties / aliases
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 180,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 12,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / approvedOffers
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 400,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 12,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / brandIntelligence
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / advertiserContext / properties / brands
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "aliases": {
        +        "default": [],
        +        "items": {
        +          "maxLength": 180,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 12,
        +        "type": "array"
        +      },
        +      "id": {
        +        "maxLength": 160,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "markets": {
        +        "default": [],
        +        "items": {
        +          "maxLength": 80,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 20,
        +        "type": "array"
        +      },
        +      "name": {
        +        "maxLength": 180,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "negativeAliases": {
        +        "default": [],
        +        "items": {
        +          "maxLength": 180,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 12,
        +        "type": "array"
        +      },
        +      "officialDomain": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "products": {
        +        "default": [],
        +        "items": {
        +          "maxLength": 300,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 20,
        +        "type": "array"
        +      },
        +      "verified": {
        +        "default": false,
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "name"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 12,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / campaignContext
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "audience": {
        +      "default": [],
        +      "items": {
        +        "maxLength": 300,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "maxItems": 12,
        +      "type": "array"
        +    },
        +    "brief": {
        +      "maxLength": 1200,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "flightDates": {
        +      "maxLength": 160,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "market": {
        +      "maxLength": 80,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "objective": {
        +      "maxLength": 300,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "strategy": {
        +      "maxLength": 900,
        +      "minLength": 1,
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / advertiserContext / properties / competitorIdentities
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "aliases": {
        +        "default": [],
        +        "items": {
        +          "maxLength": 180,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 12,
        +        "type": "array"
        +      },
        +      "id": {
        +        "maxLength": 160,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "markets": {
        +        "default": [],
        +        "items": {
        +          "maxLength": 80,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 20,
        +        "type": "array"
        +      },
        +      "name": {
        +        "maxLength": 180,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "negativeAliases": {
        +        "default": [],
        +        "items": {
        +          "maxLength": 180,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 12,
        +        "type": "array"
        +      },
        +      "officialDomain": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "products": {
        +        "default": [],
        +        "items": {
        +          "maxLength": 300,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 20,
        +        "type": "array"
        +      },
        +      "verified": {
        +        "default": false,
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "name"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / contextualTopics
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 180,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 12,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / creativeDonts
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / creativeDos
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / currentCampaigns
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 12,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / negativeAliases
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 180,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 12,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / parentCompany
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "aliases": {
        +      "default": [],
        +      "items": {
        +        "maxLength": 180,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "maxItems": 12,
        +      "type": "array"
        +    },
        +    "id": {
        +      "maxLength": 160,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "markets": {
        +      "default": [],
        +      "items": {
        +        "maxLength": 80,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "maxItems": 20,
        +      "type": "array"
        +    },
        +    "name": {
        +      "maxLength": 180,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "negativeAliases": {
        +      "default": [],
        +      "items": {
        +        "maxLength": 180,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "maxItems": 12,
        +      "type": "array"
        +    },
        +    "officialDomain": {
        +      "maxLength": 240,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "products": {
        +      "default": [],
        +      "items": {
        +        "maxLength": 300,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "maxItems": 20,
        +      "type": "array"
        +    },
        +    "verified": {
        +      "default": false,
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "name"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / advertiserContext / properties / priorityTopics
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 180,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / seasonality
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 300,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / toneOfVoice
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 300,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / wordsToNotUse
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / wordsToUse
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / policy / properties / researchBudget
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "maxDeepEvents": {
        +      "default": 3,
        +      "maximum": 10,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "maxModelCalls": {
        +      "default": 8,
        +      "maximum": 12,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "maxSearches": {
        +      "default": 6,
        +      "maximum": 20,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "monthlyRequestUnits": {
        +      "default": 1000,
        +      "maximum": 100000,
        +      "minimum": 1,
        +      "type": "integer"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / researchInstructions
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
    • Addedrecord_world_research_feedback
    • Changedrun_world_intelligence19 fields changed
      • addedInput schema / properties / advertiserContext / properties / aliases
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 180,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 12,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / approvedOffers
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 400,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 12,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / brandIntelligence
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / advertiserContext / properties / brands
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "aliases": {
        +        "default": [],
        +        "items": {
        +          "maxLength": 180,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 12,
        +        "type": "array"
        +      },
        +      "id": {
        +        "maxLength": 160,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "markets": {
        +        "default": [],
        +        "items": {
        +          "maxLength": 80,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 20,
        +        "type": "array"
        +      },
        +      "name": {
        +        "maxLength": 180,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "negativeAliases": {
        +        "default": [],
        +        "items": {
        +          "maxLength": 180,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 12,
        +        "type": "array"
        +      },
        +      "officialDomain": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "products": {
        +        "default": [],
        +        "items": {
        +          "maxLength": 300,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 20,
        +        "type": "array"
        +      },
        +      "verified": {
        +        "default": false,
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "name"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 12,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / campaignContext
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "audience": {
        +      "default": [],
        +      "items": {
        +        "maxLength": 300,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "maxItems": 12,
        +      "type": "array"
        +    },
        +    "brief": {
        +      "maxLength": 1200,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "flightDates": {
        +      "maxLength": 160,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "market": {
        +      "maxLength": 80,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "objective": {
        +      "maxLength": 300,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "strategy": {
        +      "maxLength": 900,
        +      "minLength": 1,
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / advertiserContext / properties / competitorIdentities
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "aliases": {
        +        "default": [],
        +        "items": {
        +          "maxLength": 180,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 12,
        +        "type": "array"
        +      },
        +      "id": {
        +        "maxLength": 160,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "markets": {
        +        "default": [],
        +        "items": {
        +          "maxLength": 80,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 20,
        +        "type": "array"
        +      },
        +      "name": {
        +        "maxLength": 180,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "negativeAliases": {
        +        "default": [],
        +        "items": {
        +          "maxLength": 180,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 12,
        +        "type": "array"
        +      },
        +      "officialDomain": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "products": {
        +        "default": [],
        +        "items": {
        +          "maxLength": 300,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 20,
        +        "type": "array"
        +      },
        +      "verified": {
        +        "default": false,
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "name"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / contextualTopics
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 180,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 12,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / creativeDonts
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / creativeDos
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / currentCampaigns
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 12,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / negativeAliases
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 180,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 12,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / parentCompany
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "aliases": {
        +      "default": [],
        +      "items": {
        +        "maxLength": 180,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "maxItems": 12,
        +      "type": "array"
        +    },
        +    "id": {
        +      "maxLength": 160,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "markets": {
        +      "default": [],
        +      "items": {
        +        "maxLength": 80,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "maxItems": 20,
        +      "type": "array"
        +    },
        +    "name": {
        +      "maxLength": 180,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "negativeAliases": {
        +      "default": [],
        +      "items": {
        +        "maxLength": 180,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "maxItems": 12,
        +      "type": "array"
        +    },
        +    "officialDomain": {
        +      "maxLength": 240,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "products": {
        +      "default": [],
        +      "items": {
        +        "maxLength": 300,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "maxItems": 20,
        +      "type": "array"
        +    },
        +    "verified": {
        +      "default": false,
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "name"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / advertiserContext / properties / priorityTopics
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 180,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / seasonality
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 300,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / toneOfVoice
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 300,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / wordsToNotUse
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / wordsToUse
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / policy / properties / researchBudget
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "maxDeepEvents": {
        +      "default": 3,
        +      "maximum": 10,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "maxModelCalls": {
        +      "default": 8,
        +      "maximum": 12,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "maxSearches": {
        +      "default": 6,
        +      "maximum": 20,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "monthlyRequestUnits": {
        +      "default": 1000,
        +      "maximum": 100000,
        +      "minimum": 1,
        +      "type": "integer"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / researchInstructions
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
  7. 100 tool updates
    • Changedarchive_advertiser12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedarchive_campaign12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedarchive_creative12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedbuild_ad13 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / outputs
        Added value: +{
        +  "description": "Optional editable/static JPEG/PNG delivery requirements. Studio persistence is required for static output.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "type": {
        +            "const": "editable",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "format": {
        +            "enum": [
        +              "jpeg",
        +              "png"
        +            ],
        +            "type": "string"
        +          },
        +          "maxBytes": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "quality": {
        +            "maximum": 100,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "type": {
        +            "const": "static",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "enum": [
        +          "editable",
        +          "static_jpeg",
        +          "static_png"
        +        ],
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedbuild_campaign_creative_set13 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / outputs
        Added value: +{
        +  "items": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "type": {
        +            "const": "editable",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "format": {
        +            "enum": [
        +              "jpeg",
        +              "png"
        +            ],
        +            "type": "string"
        +          },
        +          "maxBytes": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "quality": {
        +            "maximum": 100,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "type": {
        +            "const": "static",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "enum": [
        +          "editable",
        +          "static_jpeg",
        +          "static_png"
        +        ],
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedbuild_dooh12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedbuild_videoad14 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / subtitles
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "contentLocale": {
        +        "enum": [
        +          "en-GB",
        +          "zh-HK",
        +          "fr-FR",
        +          "de-DE",
        +          "es-ES"
        +        ],
        +        "type": "string"
        +      },
        +      "endSeconds": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "id": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "startSeconds": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "text": {
        +        "maxLength": 2000,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "startSeconds",
        +      "endSeconds",
        +      "text"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 256,
        +  "type": "array"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
      • addedInput schema / properties / voiceoverInstructions
        Added value: +{
        +  "maxLength": 2000,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedcancel_task12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedclone_creative12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedcreate_advertiser12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedcreate_campaign12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedcreate_creative_brief13 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / outputs
        Added value: +{
        +  "description": "Optional editable/static JPEG/PNG delivery requirements. Studio persistence is required for static output.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "type": {
        +            "const": "editable",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "format": {
        +            "enum": [
        +              "jpeg",
        +              "png"
        +            ],
        +            "type": "string"
        +          },
        +          "maxBytes": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "quality": {
        +            "maximum": 100,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "type": {
        +            "const": "static",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "enum": [
        +          "editable",
        +          "static_jpeg",
        +          "static_png"
        +        ],
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedcreate_creative_version12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedcreate_flight12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedcreate_production_plan12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changeddelete_flight12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Addedexport_creative
    • Changedexport_trafficked_assets12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedgenerate_adserver_tag12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedgenerate_preview_links12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_adserver_tag12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_advertiser12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_asset12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_brand_profile12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_brand_visuals12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_campaign12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_capabilities12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_competitor_intelligence12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_creative12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_current_seat12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_current_user12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_flight12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_leanriq_capabilities12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_media_buy_delivery12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_permissions12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_preview_link12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_task12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_template12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_trafficked_assets12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_vertical_intelligence13 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / outputs
        Added value: +{
        +  "description": "Optional editable/static JPEG/PNG delivery requirements. Studio persistence is required for static output.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "type": {
        +            "const": "editable",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "format": {
        +            "enum": [
        +              "jpeg",
        +              "png"
        +            ],
        +            "type": "string"
        +          },
        +          "maxBytes": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "quality": {
        +            "maximum": 100,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "type": {
        +            "const": "static",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "enum": [
        +          "editable",
        +          "static_jpeg",
        +          "static_png"
        +        ],
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_world_intelligence12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedget_world_opportunity12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedlaunch_creative_campaign12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanr_build_campaign_creative_set13 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / outputs
        Added value: +{
        +  "items": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "type": {
        +            "const": "editable",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "format": {
        +            "enum": [
        +              "jpeg",
        +              "png"
        +            ],
        +            "type": "string"
        +          },
        +          "maxBytes": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "quality": {
        +            "maximum": 100,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "type": {
        +            "const": "static",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "enum": [
        +          "editable",
        +          "static_jpeg",
        +          "static_png"
        +        ],
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_build_ad13 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / outputs
        Added value: +{
        +  "description": "Optional editable/static JPEG/PNG delivery requirements. Studio persistence is required for static output.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "type": {
        +            "const": "editable",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "format": {
        +            "enum": [
        +              "jpeg",
        +              "png"
        +            ],
        +            "type": "string"
        +          },
        +          "maxBytes": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "quality": {
        +            "maximum": 100,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "type": {
        +            "const": "static",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "enum": [
        +          "editable",
        +          "static_jpeg",
        +          "static_png"
        +        ],
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_build_agent_ad13 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / outputs
        Added value: +{
        +  "description": "Optional editable/static JPEG/PNG delivery requirements. Studio persistence is required for static output.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "type": {
        +            "const": "editable",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "format": {
        +            "enum": [
        +              "jpeg",
        +              "png"
        +            ],
        +            "type": "string"
        +          },
        +          "maxBytes": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "quality": {
        +            "maximum": 100,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "type": {
        +            "const": "static",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "enum": [
        +          "editable",
        +          "static_jpeg",
        +          "static_png"
        +        ],
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_build_dooh12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_create_brief13 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / outputs
        Added value: +{
        +  "description": "Optional editable/static JPEG/PNG delivery requirements. Studio persistence is required for static output.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "type": {
        +            "const": "editable",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "format": {
        +            "enum": [
        +              "jpeg",
        +              "png"
        +            ],
        +            "type": "string"
        +          },
        +          "maxBytes": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "quality": {
        +            "maximum": 100,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "type": {
        +            "const": "static",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "enum": [
        +          "editable",
        +          "static_jpeg",
        +          "static_png"
        +        ],
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_create_creative_brief13 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / outputs
        Added value: +{
        +  "description": "Optional editable/static JPEG/PNG delivery requirements. Studio persistence is required for static output.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "type": {
        +            "const": "editable",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "format": {
        +            "enum": [
        +              "jpeg",
        +              "png"
        +            ],
        +            "type": "string"
        +          },
        +          "maxBytes": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "quality": {
        +            "maximum": 100,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "type": {
        +            "const": "static",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "enum": [
        +          "editable",
        +          "static_jpeg",
        +          "static_png"
        +        ],
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_create_production_plan12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_create_strategy12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_get_brand_profile12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_get_brand_visuals12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_get_competitor_creative_intelligence15 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • removedInput schema / properties / targetMarkets / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  }
        -]
      • addedInput schema / properties / targetMarkets / items
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets / maxItems
        Added value: +50
      • addedInput schema / properties / targetMarkets / type
        Added value: +"array"
    • Changedleanriq_get_vertical_intelligence13 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / outputs
        Added value: +{
        +  "description": "Optional editable/static JPEG/PNG delivery requirements. Studio persistence is required for static output.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "type": {
        +            "const": "editable",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "format": {
        +            "enum": [
        +              "jpeg",
        +              "png"
        +            ],
        +            "type": "string"
        +          },
        +          "maxBytes": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "quality": {
        +            "maximum": 100,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "type": {
        +            "const": "static",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "enum": [
        +          "editable",
        +          "static_jpeg",
        +          "static_png"
        +        ],
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_get_world_intelligence12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_get_world_opportunity12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_launch_creative_campaign12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_list_world_opportunities12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_list_world_signals12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_qa_creative12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_resolve_or_provision_advertiser12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_run_creative_chain12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_run_world_intelligence36 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / policy / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / policy / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / policy / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / policy / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / policy / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / policy / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / policy / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / policy / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / policy / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / policy / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / policy / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / policy / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / routine / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / routine / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / routine / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / routine / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / routine / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / routine / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / routine / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / routine / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / routine / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / routine / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / routine / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / routine / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedleanriq_select_world_opportunity_for_campaign12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedlist_accessible_seats12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedlist_advertisers12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedlist_assets12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedlist_campaigns12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedlist_competitor_evidence12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedlist_competitors12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedlist_creative_versions12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedlist_creatives12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedlist_flights12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedlist_tasks12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedlist_templates12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedlist_world_opportunities12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedlist_world_signals12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedpreview_trafficking_output12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedpromote_creative_workspace12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedprovide_performance_feedback12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedpush_flight_to_yahoo12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedqa_creative12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedrefresh_brand_profile12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedrefresh_brand_visuals12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedrestore_creative_version12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedretraffick_creative12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedretraffick_flight12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedretry_task12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedrevise_creative12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedrun_competitor_intelligence15 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • removedInput schema / properties / targetMarkets / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  }
        -]
      • addedInput schema / properties / targetMarkets / items
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets / maxItems
        Added value: +50
      • addedInput schema / properties / targetMarkets / type
        Added value: +"array"
    • Changedrun_creative_chain12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedrun_world_intelligence36 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / policy / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / policy / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / policy / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / policy / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / policy / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / policy / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / policy / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / policy / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / policy / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / policy / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / policy / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / policy / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / routine / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / routine / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / routine / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / routine / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / routine / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / routine / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / routine / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / routine / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / routine / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / routine / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / routine / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / routine / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedselect_world_opportunity_for_campaign12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedtraffick_creative12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedtraffick_flight12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedupdate_advertiser12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedupdate_campaign12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedupdate_flight12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Changedvalidate_flight12 fields changed
      • addedInput schema / properties / contentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / defaultContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / languageVariantGroupId
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / marketContext
        Added value: +{
        +  "properties": {
        +    "currency": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarket": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "targetMarkets": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeZone": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / marketLanguageProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / requestedOutputLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / resolvedContentLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceLocale
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / supportedContentLocales
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarket
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "items": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
  8. 2 tool updates
    • Changedbuild_dooh3 fields changed
      • addedInput schema / properties / deliveryProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / expectedActiveVersionId
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 200,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedInput schema / properties / saveToStudio / default
        Previous value: -falseNew value: +true
    • Changedleanriq_build_dooh3 fields changed
      • addedInput schema / properties / deliveryProfile
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / expectedActiveVersionId
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 200,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedInput schema / properties / saveToStudio / default
        Previous value: -falseNew value: +true
  9. 2 tool updates
    • Changedleanriq_get_competitor_creative_intelligence1 field changed
      • addedInput schema / properties / recommendationMode
        Added value: +{
        +  "default": "FULL",
        +  "enum": [
        +    "FULL",
        +    "EVIDENCE_ONLY"
        +  ],
        +  "type": "string"
        +}
    • Changedrun_competitor_intelligence1 field changed
      • addedInput schema / properties / recommendationMode
        Added value: +{
        +  "default": "FULL",
        +  "enum": [
        +    "FULL",
        +    "EVIDENCE_ONLY"
        +  ],
        +  "type": "string"
        +}
  10. 3 tool updates
    • Changedbuild_videoad3 fields changed
      • addedInput schema / properties / advertiser
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / campaign
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / sourceFrameImageUrls
        Added value: +{
        +  "items": {
        +    "maxLength": 4000,
        +    "type": "string"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
    • Changedlaunch_creative_campaign1 field changed
      • addedInput schema / properties / sourceFrameImageUrls
        Added value: +{
        +  "items": {
        +    "maxLength": 4000,
        +    "type": "string"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
    • Changedleanriq_launch_creative_campaign1 field changed
      • addedInput schema / properties / sourceFrameImageUrls
        Added value: +{
        +  "items": {
        +    "maxLength": 4000,
        +    "type": "string"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
  11. 6 tool updates
    • Addedbuild_videoad
    • Changedget_brand_visuals2 fields changed
      • changedInput schema / properties / options / properties / maxImages / default
        Previous value: -30New value: +60
      • changedInput schema / properties / options / properties / maxSocialImages / default
        Previous value: -10New value: +30
    • Changedlaunch_creative_campaign6 fields changed
      • addedInput schema / properties / cta
        Added value: +{
        +  "maxLength": 500,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / durationSeconds
        Added value: +{
        +  "maximum": 120,
        +  "minimum": 5,
        +  "type": "integer"
        +}
      • addedInput schema / properties / headline
        Added value: +{
        +  "maxLength": 500,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / skippable
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / sourceAssetIds
        Added value: +{
        +  "items": {
        +    "maxLength": 240,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
      • addedInput schema / properties / supportingCopy
        Added value: +{
        +  "maxLength": 500,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedleanriq_get_brand_visuals2 fields changed
      • changedInput schema / properties / options / properties / maxImages / default
        Previous value: -30New value: +60
      • changedInput schema / properties / options / properties / maxSocialImages / default
        Previous value: -10New value: +30
    • Changedleanriq_launch_creative_campaign6 fields changed
      • addedInput schema / properties / cta
        Added value: +{
        +  "maxLength": 500,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / durationSeconds
        Added value: +{
        +  "maximum": 120,
        +  "minimum": 5,
        +  "type": "integer"
        +}
      • addedInput schema / properties / headline
        Added value: +{
        +  "maxLength": 500,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / skippable
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / sourceAssetIds
        Added value: +{
        +  "items": {
        +    "maxLength": 240,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
      • addedInput schema / properties / supportingCopy
        Added value: +{
        +  "maxLength": 500,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedrefresh_brand_visuals2 fields changed
      • changedInput schema / properties / options / properties / maxImages / default
        Previous value: -30New value: +60
      • changedInput schema / properties / options / properties / maxSocialImages / default
        Previous value: -10New value: +30
  12. 2 tool updates
    • Changedlaunch_creative_campaign1 field changed
      • addedInput schema / properties / creativeIds
        Added value: +{
        +  "items": {
        +    "maxLength": 240,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 24,
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedleanriq_launch_creative_campaign1 field changed
      • addedInput schema / properties / creativeIds
        Added value: +{
        +  "items": {
        +    "maxLength": 240,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 24,
        +  "minItems": 1,
        +  "type": "array"
        +}
  13. 6 tool updates
    • Changedcreate_flight2 fields changed
      • addedInput schema / properties / creativeConfigs / items / properties / thirdPartyTags
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "creativeId": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "name": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "tag": {
        +        "maxLength": 12000,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "tag"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
      • addedInput schema / properties / thirdPartyTags
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "creativeId": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "name": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "tag": {
        +        "maxLength": 12000,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "tag"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
    • Changedlaunch_creative_campaign1 field changed
      • addedInput schema / properties / thirdPartyTags
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "creativeId": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "name": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "tag": {
        +        "maxLength": 12000,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "tag"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
    • Changedleanriq_launch_creative_campaign1 field changed
      • addedInput schema / properties / thirdPartyTags
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "creativeId": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "name": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "tag": {
        +        "maxLength": 12000,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "tag"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
    • Changedleanriq_run_world_intelligence14 fields changed
      • addedInput schema / properties / advertiserContext / properties / approvedBenefits
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 400,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / approvedClaims
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 30,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / brandPositioning
        Added value: +{
        +  "maxLength": 1200,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / advertiserContext / properties / brandSummary
        Added value: +{
        +  "maxLength": 1600,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / advertiserContext / properties / category
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / advertiserContext / properties / competitors
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 400,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / ctaGuidance
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 300,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / keyMessages
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 400,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / market
        Added value: +{
        +  "maxLength": 80,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / advertiserContext / properties / officialDomain
        Added value: +{
        +  "maxLength": 240,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / advertiserContext / properties / products
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 300,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / propositions
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 400,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / services
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 300,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / targetAudience
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 400,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
    • Changedrun_world_intelligence14 fields changed
      • addedInput schema / properties / advertiserContext / properties / approvedBenefits
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 400,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / approvedClaims
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 30,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / brandPositioning
        Added value: +{
        +  "maxLength": 1200,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / advertiserContext / properties / brandSummary
        Added value: +{
        +  "maxLength": 1600,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / advertiserContext / properties / category
        Added value: +{
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / advertiserContext / properties / competitors
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 400,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / ctaGuidance
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 300,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / keyMessages
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 400,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / market
        Added value: +{
        +  "maxLength": 80,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / advertiserContext / properties / officialDomain
        Added value: +{
        +  "maxLength": 240,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / advertiserContext / properties / products
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 300,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / propositions
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 400,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / services
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 300,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / advertiserContext / properties / targetAudience
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "maxLength": 400,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
    • Changedupdate_flight2 fields changed
      • addedInput schema / properties / creativeConfigs / items / properties / thirdPartyTags
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "creativeId": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "name": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "tag": {
        +        "maxLength": 12000,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "tag"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
      • addedInput schema / properties / thirdPartyTags
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "creativeId": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "name": {
        +        "maxLength": 240,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "tag": {
        +        "maxLength": 12000,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "tag"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
  14. 1 tool update
    • Addedget_leanriq_capabilities
  15. 12 tool updates
    • Addedget_world_intelligence
    • Addedget_world_opportunity
    • Addedleanriq_get_world_intelligence
    • Addedleanriq_get_world_opportunity
    • Addedleanriq_list_world_opportunities
    • Addedleanriq_list_world_signals
    • Addedleanriq_run_world_intelligence
    • Addedleanriq_select_world_opportunity_for_campaign
    • Addedlist_world_opportunities
    • Addedlist_world_signals
    • Addedrun_world_intelligence
    • Addedselect_world_opportunity_for_campaign
  16. 4 tool updates
    • Changedbuild_campaign_creative_set2 fields changed
      • addedInput schema / properties / channel
        Added value: +{
        +  "default": "display",
        +  "enum": [
        +    "display",
        +    "dooh"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / doohContext
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
    • Addedbuild_dooh
    • Changedleanr_build_campaign_creative_set2 fields changed
      • addedInput schema / properties / channel
        Added value: +{
        +  "default": "display",
        +  "enum": [
        +    "display",
        +    "dooh"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / doohContext
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
    • Addedleanriq_build_dooh
  17. 3 tool updates
    • Changedget_brand_visuals3 fields changed
      • addedInput schema / properties / options / properties / fetchVideos
        Added value: +{
        +  "default": true,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / options / properties / maxSocialImages
        Added value: +{
        +  "default": 10,
        +  "maximum": 40,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / options / properties / maxVideos
        Added value: +{
        +  "default": 12,
        +  "maximum": 30,
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changedleanriq_get_brand_visuals3 fields changed
      • addedInput schema / properties / options / properties / fetchVideos
        Added value: +{
        +  "default": true,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / options / properties / maxSocialImages
        Added value: +{
        +  "default": 10,
        +  "maximum": 40,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / options / properties / maxVideos
        Added value: +{
        +  "default": 12,
        +  "maximum": 30,
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changedrefresh_brand_visuals3 fields changed
      • addedInput schema / properties / options / properties / fetchVideos
        Added value: +{
        +  "default": true,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / options / properties / maxSocialImages
        Added value: +{
        +  "default": 10,
        +  "maximum": 40,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / options / properties / maxVideos
        Added value: +{
        +  "default": 12,
        +  "maximum": 30,
        +  "minimum": 0,
        +  "type": "integer"
        +}
  18. 3 tool updates
    • Changedget_brand_profile1 field changed
      • addedInput schema / properties / requestedSections
        Added value: +{
        +  "items": {
        +    "maxLength": 80,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 32,
        +  "type": "array"
        +}
    • Changedleanriq_get_brand_profile1 field changed
      • addedInput schema / properties / requestedSections
        Added value: +{
        +  "items": {
        +    "maxLength": 80,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 32,
        +  "type": "array"
        +}
    • Changedrefresh_brand_profile1 field changed
      • addedInput schema / properties / requestedSections
        Added value: +{
        +  "items": {
        +    "maxLength": 80,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 32,
        +  "type": "array"
        +}

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to create, manage, and optimize advertising campaigns across 14 ad and measurement platforms through a single MCP endpoint, with over 530 executable tools.
    4
    MIT
  • F
    license
    Not graded
    quality
    F
    maintenance
    Hosted MCP server that turns a one-line brief into finished, on-brand ad creative, including short video ads, product photos, and voiceover, with A/B variant testing and performance feedback loops.
    1
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources