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.7% over 56 days
Last Tested
Transport
Streamable HTTP ยท MCP 2025-11-25
URL

TDQS

C2.6/5.0

Scored across 103 tools

Disambiguation2/5

The set is riddled with literal duplicates: leanriq_build_ad, leanriq_build_agent_ad, leanr_build_campaign_creative_set, leanriq_get_brand_profile, leanriq_launch_creative_campaign and many more are self-declared 'Deprecated alias' copies of canonical tools, creating near-identical choices. Even ignoring aliases, overlapping build/creation paths (build_ad vs build_campaign_creative_set vs run_creative_chain vs launch_creative_campaign) are hard to distinguish without deep reading.

Naming Consistency2/5

Verb_noun is the base convention, but prefixes are inconsistent: bare names (create_campaign), leanriq_-prefixed aliases, leanr_build_* truncated aliases, and leanriq_create_strategy (alias of a differently-named canonical tool). Three different prefix schemes plus naming drift between aliases and originals break predictability.

Tool Count1/5

103 tools for a single advertiser/creative platform is an extreme overshoot; the effective canonical surface is likely ~50, with the rest being deprecated aliases bloating the registry. This is far beyond what an agent can reasonably scan or select from.

Completeness4/5

Coverage of the adtech domain is genuinely broad: advertiser/campaign/creative/flight CRUD, QA, trafficking, ad-server tags, previews, intelligence, seat/user management, and task lifecycle are all present. Gaps exist mainly in redundant rather than missing operations, so the surface is largely complete.

Available Tools

103 tools
archive_advertiserarchive advertiserB
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
seatIdNo
flightIdNo
seatNameNo
accountIdYes
approvalIdNo
campaignIdNo
creativeIdNo
resourceIdNo
advertiserIdYes
idempotencyKeyNo
expectedVersionNo

Output Schema

ParametersJSON 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?

The description goes well beyond the annotations (destructiveHint, idempotentHint) by detailing mutation modes (validate_only, preview_only, execute), the partial failure policy (completed_items_not_rolled_back), the derived idempotency key behavior, and the seat requirement. This gives the agent critical execution-time expectations.

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 verbose and repetitive; the first two words merely echo the tool name, and most of the long middle section is generic mutation/response boilerplate that doesn't help distinguish this tool. A focused description of what 'archive' does and which parameters matter would be far more 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?

Although an output schema exists, the description omits core domain knowledge: what archiving an advertiser actually does, any prerequisites or side effects, and what the 12 parameters are for. The generic operational details don't compensate for this lack of tool-specific completeness.

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

Parameters2/5

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

With 0% schema description coverage, the description was expected to compensate, but it only mentions seatId/seatName in the seat-authorization rule and idempotencyKey in the retry note. The remaining 10 parameters (accountId, advertiserId, dryRun, flightId, expectedVersion, etc.) are completely unexplained, forcing the agent to guess their meaning.

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 opens with 'archive advertiser,' clearly identifying the verb and resource, and the sibling tools (archive_campaign, archive_creative) confirm the scope is advertiser-specific. However, it never states what archiving does or how it differs from related operations, so it's clear but not fully explicit.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like update_advertiser or delete_flight. The generic mutation boilerplate ('Task support: forbidden') offers no decision-making context, leaving the agent to infer usage from the name alone.

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

archive_campaignarchive campaignC
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
seatIdNo
flightIdNo
seatNameNo
accountIdYes
approvalIdNo
campaignIdYes
creativeIdNo
resourceIdNo
advertiserIdNo
idempotencyKeyNo
expectedVersionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.8/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint=true, idempotentHint=true, readOnlyHint=false), the description adds substantial behavioral context: execution is synchronous, task support is forbidden, mutation modes are validate_only/preview_only/execute, and partial failures are not rolled back. It also explains idempotencyKey fallback behavior, the seatId/seatName requirement for multi-seat mutations, and how the returned JSON should be presented to users. 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.

Conciseness3/5

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

The description is a single dense paragraph with useful information, but it is not concise. The first sentence 'archive campaign' is redundant with the title, and many sentences contain generic instructions about response formatting (e.g., 'Use assistantSummary first,' 'Never display raw JSON') that are not specific to this tool. It is structured as a sequence of metadata declarations rather than a clear, scannable explanation.

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 many operational aspects: execution mode, mutation modes, partial failure, idempotency, seat rules, and response handling. However, it does not clarify the business effect of archiving (what happens to the campaign), whether the action is reversible, or how the optional parameters apply to this tool. The presence of an output schema reduces the need to document return values, but the core purpose and parameter applicability remain 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?

With 0% schema description coverage, the description carries the burden of explaining parameters. It does add semantics for idempotencyKey (deterministic retry key) and seatId/seatName (must be supplied on the call when multiple seats are authorized). However, it leaves the other 10 parameters unexplained, including dryRun and several optional IDs (flightId, creativeId, resourceId, etc.) whose relevance to archiving a campaign is unclear. The four mutation modes are not mapped to the dryRun parameter.

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 begins with 'archive campaign,' which simply restates the tool's name and title. It does not explain what archiving entails (e.g., moving to an inactive state, hiding from active lists, or unavailability for further edits) and does not distinguish this from sibling tools like archive_advertiser or archive_creative beyond the resource name. The verb 'archive' is specific, but the intended business effect is absent.

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 provides no guidance on when to use this tool versus alternatives. It does not mention scenarios where archiving is appropriate, nor does it exclude cases where other actions (e.g., delete_flight, update_campaign, cancel_task) would be preferable. The metadata about mutation modes and partial failure is useful but does not address selection criteria.

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

archive_creativearchive creativeA
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
seatIdNo
flightIdNo
seatNameNo
accountIdYes
approvalIdNo
campaignIdNo
creativeIdYes
resourceIdNo
advertiserIdNo
idempotencyKeyNo
expectedVersionNo

Output Schema

ParametersJSON 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 already declare destructiveHint=true and idempotentHint=true, but the description adds significant behavioral context: synchronous execution, task support forbidden, mutation modes (validate_only, preview_only, execute), partial failure policy, idempotency key derivation, and seat requirements on writes. 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.

Conciseness2/5

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

The description is lengthy and includes a large amount of generic boilerplate about response formatting (e.g., 'Use assistantSummary first', 'Never display raw JSON') that is unrelated to the tool's core function. Although it starts with 'archive creative', the extra sentences dilute the message and could be trimmed significantly.

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 provides useful behavioral context (mutation modes, partial failure, idempotency, seat requirements) and an output schema exists, so return values are covered. However, it does not explain which of the 12 parameters are required, what 'archive' entails, or whether the operation is reversible. This leaves gaps for a destructive tool with many 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?

With no parameter descriptions in the schema, the description must compensate, but it only touches on idempotencyKey and seatId/seatName. Core parameters like accountId, creativeId, flightId, and others remain unexplained. Partial value is added for two parameters, but the majority are undocumented.

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 'archive creative', a specific verb and resource, clearly distinguishing it from sibling archive tools like archive_advertiser and archive_campaign. The subsequent classification 'writes to Studio, destructive' reinforces the operation's 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?

The description does not provide explicit when-to-use or when-not-to-use guidance specific to this tool. It does not mention alternatives or conditions for archiving. Usage is implied by the name and initial phrase, but no concrete selection guidance is offered.

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

build_adBuild 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.B
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
briefNo
forceNo
inputNo
assetsNo
promptNo
seatIdNo
taskIdNo
assetIdNo
audienceNo
campaignNo
creativeNo
flightIdNo
seatNameNo
templateNo
accountIdNo
objectiveNo
advertiserNo
campaignIdNo
creativeIdNo
templateIdNo
creativeIdsNo
persistenceNo
advertiserIdNo
instructionsNo
idempotencyKeyNo
requestedFormatsNo
skipTraffickedRebuildNo

Output Schema

ParametersJSON 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?

The description goes well beyond the annotations by disclosing partial failure policy (completed_items_not_rolled_back), durable execution, billable AI usage, seatId/seatName requirements for multi-seat mutations, and a deterministic retry-key mechanism when idempotencyKey is omitted. These are concrete behavioral traits that help predict side effects. The description is consistent with the idempotentHint annotation, so no 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 first two sentences efficiently state the primary purpose, but the remainder contains extensive generic response-handling instructions ('Use assistantSummary first...', 'Never display raw JSON...') that are not specific to this tool and are likely boilerplate. The description is lengthy and dilutes the signal-to-noise ratio, making it harder to parse the essential tool-specific details.

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 many operational aspects: default save behavior, partial failure policy, seat authentication rules, and idempotency, which gives a fairly complete picture of the tool's runtime behavior. However, given the large parameter count (27) and 0% schema coverage, the lack of definitions for most parameters and the absence of a clear distinction from similar sibling build tools leaves significant gaps 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.

Parameters2/5

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

With 0% schema description coverage and 27 parameters, the description carries the full burden of parameter explanation. It only clarifies campaignId/campaignName, persistence, idempotencyKey, and seatId/seatName. Core parameters such as brief, assets, template, creativeIds, and instructions remain completely undefined, leaving an agent unable to correctly construct a valid 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?

Opens with a clear verb-object phrase 'Build and save existing Studio creative records,' immediately conveying the tool's core function and its focus on existing records. The campaign-scoped behavior and default save action add specific scope. However, it does not explicitly differentiate from sibling tools such as build_campaign_creative_set or leanriq_build_ad, which could cause confusion in an agent's tool selection.

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 a concrete usage scenario: supplying campaignId/campaignName triggers a full persisted inventory build, and it explicitly restricts persistence preview_only to unsaved ad-hoc previews. It also mentions mutation modes and task support. But it never names alternative tools or states when not to use this tool, leaving the when-to-use guidance implicit rather than explicit.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
KPIYes
brandNo
notesNo
budgetNo
seatIdNo
billingNo
channelNodisplay
endDateNo
sandboxNo
audienceYes
operatorNo
seatNameNo
accountIdNo
objectiveYes
startDateNo
campaignIdNo
doohContextNo
funnelStageYes
targetSizesNo
advertiserIdNo
campaignNameYes
generateTagsNo
saveToStudioNo
idempotencyKeyNo
desiredVariantCountNo
strictBrandComplianceNo
createAdvertiserIfMissingNo

Output Schema

ParametersJSON 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 only cover readOnly/idempotent/destructive/openWorld; the description goes well beyond them by disclosing billable AI usage, synchronous execution, task support forbidden, the three mutation modes, and a partial-failure policy (completed_items_not_rolled_back). It also explains idempotencyKey derivation behavior, which materially changes how an agent should retry.

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 in the first two sentences, but the remainder is padded with generic orchestration boilerplate (assistantSummary-first, never display raw JSON, mention IDs only when useful) that is not specific to this tool and inflates the definition. The dense metadata block earns some of its space, but the response-formatting prose 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?

An output schema exists, so return values need not be described, and the behavioral block covers cost, execution mode, and failure semantics for a high-complexity tool. However, with 27 parameters, 5 required, two enums, and nested objects at 0% schema coverage, the definition is materially incomplete on the input side, which is the main thing an agent must get right here.

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 27 parameters, including nested brand and doohContext objects, so the description carries the full burden of explaining parameters and largely does not. Only idempotencyKey receives any treatment; required fields like audience, KPI, funnelStage, objective, and the billing/channel enums get no semantic guidance, leaving most of the surface undocumented.

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 ('plan and create'), a specific resource ('an initial Studio creative set'), and a scope constraint ('for a campaign that has no saved creatives'). It explicitly names the sibling it must not be confused with (build_ad) and the disambiguating condition, so an agent can separate it from the other ~80 build/create 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 Guidelines5/5

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

States when to use (a campaign with no saved creatives), when not to use (rebuilding existing creatives), and the concrete alternative with its required arguments ('use build_ad with campaignId or campaignName'). This is exactly the when/when-not/alternative pattern, with nothing left to inference.

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

build_doohCreate a DOOH-native, advertiser-aware two-concept build, compare exact Studio-rendered posters, and return an editable non-interactive CreativeDocument only after bounded quality review. It does not route through Display build_ad.A
Idempotent
Inspect

Create a DOOH-native, advertiser-aware two-concept build, compare exact Studio-rendered posters, and return an editable non-interactive CreativeDocument only after bounded quality review. It does not route through Display 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
copyNo
assetsNo
formatNo
seatIdNo
campaignNo
creativeNo
seatNameNo
templateNo
accountIdNo
templatesNo
advertiserNo
campaignIdNo
creativeIdNo
doohContextNo
advertiserIdNo
saveToStudioNo
strategyBriefNo
idempotencyKeyNo

Output Schema

ParametersJSON 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 cover safety (readOnly=false, destructive=false, idempotent=true), and the description goes well beyond them: billable AI usage classification, durable execution, completed_items_not_rolled_back partial-failure behavior, deterministic idempotency-key derivation on omission, and the 'must supply seatId/seatName on this exact call' write constraint. This is the substantive context an agent needs before a paid mutation.

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 earns its place, but the description duplicates the title verbatim (including a stray '..'), then pads with generic response-style boilerplate about never showing raw JSON and assistantSummary that is not tool-specific. Roughly half the text is reusable cross-tool guidance rather than this tool's semantics.

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 no explanation, and the description still covers mutation modes, failure policy, idempotency, and seat auth. The main gap is guidance on the many nested creative/dooh parameters, though the schema's typing and enums carry much of that load.

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 18 parameters, so the description has to compensate; it does so for only two (idempotencyKey derivation and seatId/seatName write requirement). The rich nested objects (copy, assets, format, doohContext) are left entirely to the schema structure, so the compensation is partial.

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 names a specific verb and resource set: DOOH-native two-concept build, comparison of Studio-rendered posters, and return of an editable non-interactive CreativeDocument. It explicitly distinguishes itself from the Display path ('does not route through Display build_ad'), so an agent can separate it from the many build_* 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?

It tells the agent what this is not (build_ad), lists the mutation modes (validate_only, preview_only, execute) that drive how to call it, and states the seat requirement for writes. It stops short of naming when to prefer leanriq_build_dooh or build_videoad, so alternative routing is only partially resolved.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
ctaNo
offerNo
seatIdNo
channelYes
productNo
campaignNo
headlineNo
seatNameNo
accountIdNo
objectiveYes
requestIdNo
skippableNo
advertiserNo
campaignIdNo
advertiserIdNo
idempotencyKeyNo
sourceAssetIdsNo
supportingCopyNo
composeInStudioNo
contractVersionNobuild-videoad-v1
durationSecondsNo
studioCreativeIdNo
sourceFrameImageUrlsNo
expectedCreativeVersionIdNo

Output Schema

ParametersJSON 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?

The description adds substantial behavior beyond the annotations: it flags billable AI usage, durable execution, optional task support, the three mutation modes, a partial-failure policy (completed_items_not_rolled_back), and the guarantee that no MP4 master is claimed before Studio renders and certifies one. It also explains the idempotency fallback and the exact-call seat requirement, which annotations alone do not cover. This is richer context than the readOnly/idempotent hints 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, but the description balloons with orchestration boilerplate about how to phrase responses to the user and display rules that are tangential to invoking this specific tool, plus a duplicated sentence-ending period after "certified one..".

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 mutation with an output schema present, the description covers the failure policy, idempotency, seat authorization, and mode behavior, so an agent has enough to call it safely. The main shortfall is the near-total absence of parameter-level semantics across 24 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?

With 24 parameters and 0% schema description coverage, the description should carry the semantics, but it only explains idempotencyKey and the seatId/seatName requirement. The remaining ~21 parameters (channel, objective, durationSeconds, sourceAssetIds, composeInStudio, etc.) are left entirely to the bare schema, leaving a large 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 ("Create") and resource ("advertiser-aware pre-roll or CTV video composition") with channel constraints, which distinguishes it from generic build_ad and build_dooh siblings. It does not explicitly name those siblings, but the pre-roll/CTV framing is specific enough for an agent to select it correctly.

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 execution modes (validate_only, preview_only, execute) and the seat requirement for writes, which imply usage conditions. However, there is no explicit guidance on when to choose this over build_ad, build_dooh, or leanriq_build_ad, and no stated prerequisites or exclusions beyond seatId/seatName.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
seatIdNo
taskIdYes
seatNameNo
accountIdNo
idempotencyKeyNo

Output Schema

ParametersJSON 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 explicitly states 'Classification: read-only,' yet annotations set readOnlyHint=false, and the text itself references 'mutation modes' and 'on a mutation,' creating a direct contradiction. This is a serious inconsistency that would mislead an agent about the tool's 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.

Conciseness2/5

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

The description is bloated with generic instructions about response formatting and JSON handling unrelated to cancel_task's operation. The core purpose is buried under boilerplate, violating front-loading principles.

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?

Despite an output schema existing, the description fails to convey cancellation semantics, side effects, or failure modes. The contradictory classification and generic metadata leave the agent without a reliable mental model.

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

Parameters2/5

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

With 0% schema description coverage, the description must explain all parameters, but it only hints at idempotencyKey and seatId/seatName behavior. The required taskId parameter remains entirely undocumented, and reason and accountId are not explained.

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 simply repeats the tool name ('cancel task') without explaining what cancellation entails, its effects, or how it differs from sibling operations like retry_task or delete_flight. This is a tautology that provides no specific purpose clarification.

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 cancel_task versus alternatives. The generic notes about seatId and idempotencyKey apply to mutations broadly but do not address tool selection or context.

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

clone_creativeclone creativeB
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
seatIdNo
seatNameNo
accountIdYes
approvalIdNo
creativeIdYes
idempotencyKeyYes
expectedVersionNo

Output Schema

ParametersJSON 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?

The description goes well beyond the annotations (which only indicate it's a write, idempotent, and non-destructive). It reveals that execution is synchronous, mutation modes include validate_only/preview_only/execute, partial failures are not rolled back, and a deterministic idempotency key is derived if omitted. It also mandates seatId/seatName for multi-seat writes. These are rich behavioral details that help an agent understand side effects and error handling.

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 overcrowded with generic response-formatting instructions (assistantSummary, raw JSON, mention IDs only when useful) that are not specific to this tool and could be global boilerplate. While the action and key behavioral traits appear early, the critical idempotency and seat rules are buried at the end. The structure could be tightened by separating tool-specific facts from generic response guidelines.

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?

Despite having an output schema and annotations, the description does not clarify the core cloning semantics: what exactly is cloned, how creativeId points to the source, or what approvalId, expectedVersion, and dryRun do. With 8 parameters and 0% schema coverage, an agent would struggle to invoke the tool correctly. The added operational details are helpful but not sufficient to make the description 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?

Schema description coverage is 0%, so the description must explain parameters. It partially explains idempotencyKey (derived if omitted) and seatId/seatName (required for multi-seat mutations), but leaves creativeId, accountId, dryRun, approvalId, and expectedVersion entirely unexplained. This is insufficient for an agent to correctly populate required parameters like creativeId.

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 opens with 'clone creative', which is a specific verb+resource pair that clearly indicates the tool's action. It is distinct from sibling tools like archive_creative or create_creative_version. However, it does not elaborate on what cloning entails (e.g., whether it duplicates an existing creative into a new one), leaving some ambiguity about the exact operation.

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

Usage Guidelines2/5

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

No explicit guidance is provided on when to use clone_creative versus alternatives such as create_creative_version or retraffick_creative. The description mentions 'Task support: forbidden' but this is a constraint, not usage guidance. There is no mention of scenarios, prerequisites, or when another tool would be more appropriate.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
seatIdNo
seatNameNo
accountIdYes
advertiserYes
approvalIdNo
idempotencyKeyYes
expectedVersionNo

Output Schema

ParametersJSON 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?

The description discloses substantial behavioral detail beyond the annotations: mutation modes (validate_only, preview_only, execute), partial failure policy (completed_items_not_rolled_back), idempotency key derivation when omitted, and the seat requirement on mutations. These are valuable context that annotations alone do not provide. 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.

Conciseness2/5

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

The description is verbose and mixes tool-specific behavior with generic response guidelines (e.g., 'Use assistantSummary first', 'Never display raw JSON'). The redundant opening 'create advertiser' restates the tool name. Many sentences are operational policy that applies to all tools, making the description bloated and harder to scan.

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 provides rich operational context (mutation modes, partial failure, idempotency, seat requirements) but lacks domain context about what an advertiser is in the Studio system and does not explain how this tool relates to similar sibling tools. The output schema exists, so return values are covered, but the description is incomplete for a tool with 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 coverage is 0%, so the description must compensate. It adds meaning for idempotencyKey (omission behavior) and seatId/seatName (conditional requirement), but leaves other parameters like accountId, advertiser, approvalId, expectedVersion, and dryRun unexplained. The schema itself provides structure, but the description only partially compensates for the lack of semantic 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 states the core action clearly: 'create advertiser' and 'writes to Studio'. This makes the tool's purpose unambiguous and distinct from update/advertiser or archive_advertiser by the verb 'create'. However, it does not differentiate from leanriq_resolve_or_provision_advertiser, which may also create an advertiser.

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 guidance on when to use this tool versus other advertiser-related tools like update_advertiser or resolve_or_provision_advertiser. The description provides some operational constraints (e.g., seatId/seatName required when multiple seats are authorized) but does not address tool selection or prerequisites beyond that.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
seatIdNo
campaignYes
seatNameNo
accountIdNo
approvalIdNo
idempotencyKeyYes
expectedVersionNo

Output Schema

ParametersJSON 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?

The description discloses write classification, synchronous execution, mutation modes, partial failure policy, idempotency behavior, and seat requirements. It goes well beyond the annotations (readOnlyHint false, idempotentHint true) by explaining the derived retry key and seat authorization rule.

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 excessively long and includes generic response-handling instructions (e.g., never display raw JSON, use assistantSummary first) that are not specific to this tool. The first part is concise, but the appended meta-information makes it bloated.

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

Completeness4/5

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

The tool is complex with nested structures, mutation modes, and idempotency concerns. The description covers these aspects well, including failure policy and seat requirements, and with an output schema present, return-value explanations are not needed. Some details like the meaning of validate_only vs execute could be expanded, but overall it is comprehensive.

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

Parameters3/5

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

With 0% schema description coverage, the description adds useful mappings for campaignName, funnelStage, targetImpressions, and primaryKpi/secondaryKpi. However, it does not explain many other parameters such as budget, status, dates, or the sizes arrays, leaving gaps in understanding.

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

Purpose5/5

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

The description clearly states the tool creates a Studio campaign with a specific verb and resource. It also clarifies that all fields go inside the campaign object and provides natural-language mappings, distinguishing it from sibling tools like update_campaign.

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

Usage Guidelines4/5

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

The description gives clear context for creating a new campaign, including mapping natural language terms to fields and structural guidance ('Put all campaign fields inside campaign'). It also notes seat requirements for writes, but does not explicitly name alternative tools for other operations.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
briefNo
forceNo
inputNo
assetsNo
promptNo
seatIdNo
taskIdNo
assetIdNo
audienceNo
campaignNo
creativeNo
flightIdNo
seatNameNo
templateNo
accountIdNo
objectiveNo
advertiserNo
campaignIdNo
creativeIdNo
templateIdNo
creativeIdsNo
persistenceNo
advertiserIdNo
instructionsNo
idempotencyKeyNo
requestedFormatsNo
skipTraffickedRebuildNo

Output Schema

ParametersJSON 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, the description discloses that it writes to Studio, creates billable AI usage, is synchronous, forbidden as task, has multiple mutation modes, partial failure policy, permission requirements for seat selection, and deterministic retry behavior. This far exceeds annotation coverage.

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 title nearly verbatim, uses a stray '..', and appends a long series of policy statements without clear structure. While dense, it is not concise and front-loads only the first sentence before a sizable block of instructions.

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 complexity (27 params, output schema present, annotations), the description provides substantial behavioral context: mutation modes, failure policies, auth requirements, retry logic, and response presentation rules. However, the mismatch between 'saveToStudio' in the description and 'persistence' in the schema, plus minimal coverage of most parameters, prevents a perfect completeness score.

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

Parameters3/5

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

The schema has 0% description coverage across 27 parameters, so the description must compensate. It explains the role of creativeIds, saveToStudio (persistence), seatId/seatName, and idempotencyKey, but leaves the majority of parameters (brief, input, assets, audience, campaign, template, etc.) undescribed, adding limited meaning for the full parameter set.

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

Purpose5/5

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

Description opens with a clear verb+resource: 'Generate Studio-ready design briefs for one or more creatives,' and specifies the inputs (campaign context, brand rules, audience, offer, format constraints). It also distinguishes the conditional save behavior, separating it from purely read or versioning 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 gives clear context on when the tool saves vs proposes ('When creative IDs and saveToStudio are supplied... otherwise returns a non-destructive proposal'), and lists mutation modes (validate_only, preview_only, execute). However, it doesn't explicitly name sibling alternatives or state 'use instead of X', so 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.

create_creative_versioncreate creative versionC
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
seatIdNo
creativeNo
seatNameNo
accountIdYes
versionIdNo
approvalIdNo
creativeIdYes
changeSummaryNo
idempotencyKeyYes
expectedVersionNo

Output Schema

ParametersJSON 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?

The description goes well beyond the annotations by disclosing synchronous execution, 'Task support: forbidden', partial failure policy ('completed_items_not_rolled_back'), and mutation modes (validate_only, preview_only, execute). It also explains the automatic derivation of idempotency keys when omitted, which adds meaningful 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 description is lengthy yet unfocused. It mixes core tool behavior with generic agent response guidelines (e.g., 'Use assistantSummary first', 'Never display raw JSON'), which are not specific to this tool and dilute the message. The essential purpose is buried under 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?

With 11 parameters, a nested object, and an output schema, the tool is complex, but the description omits what a creative version is, what the parameters mean, and when to use this tool. The provided behavioral details are useful but do not compensate for the missing core 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%, so the description must compensate, but it only touches on idempotencyKey and seatId/seatName in passing. The meanings of creative, versionId, approvalId, changeSummary, expectedVersion, and dryRun are never explained, leaving the agent to guess.

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 the exact tool title 'create creative version', which is a tautology. It adds 'writes to Studio' and 'mutation modes' but never defines what a creative version is or how it differs from sibling tools like clone_creative or revise_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 guidance is given on when to prefer this tool over alternatives. The description provides behavioral constraints (mutation modes, idempotency, seat requirement) but does not explain the circumstances under which create_creative_version should be invoked versus other creative-related tools.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
dryRunNo
seatIdNo
flightIdNo
platformNo
seatNameNo
accountIdNo
approvalIdNo
campaignIdNo
advertiserIdNo
idempotencyKeyNo
thirdPartyTagsNo
creativeConfigsNo
expectedVersionNo

Output Schema

ParametersJSON 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 declare the write/idempotent/non-destructive profile, and the description adds substantial context beyond that: durable execution, the partial-failure policy (completed_items_not_rolled_back), automatic derivation of a deterministic idempotency key, and the rule that a seatId/seatName must be supplied on the exact write call when multiple seats are authorised. These are genuinely useful traits an agent could not infer from the annotations 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 description is a dense block of directives; the mutation-mode and idempotency lines earn their place, but the response-presentation boilerplate (never display raw JSON, use assistantSummary, mention IDs only when useful) is generic guidance not specific to create_flight. It is front-loaded with the tool name first, but the signal-to-noise ratio is mediocre.

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 for a 14-parameter mutation with nested creativeConfigs and zero required-field guidance, the description is incomplete: it never states what a flight is, how the campaign/advertiser/account fields interrelate, or which fields are mandatory in practice.

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 14 parameters, so the burden falls on the description, yet it only addresses two of them (idempotencyKey and seatId/seatName). Core fields such as name, platform, accountId, advertiserId, campaignId, expectedVersion, and the creativeConfigs/thirdPartyTags structures receive no explanation at all.

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 flight.', which simply restates the tool name, and never explains what a flight actually is or how it relates to campaigns, advertisers, or creatives. 'Classification: writes to Studio' adds a hint about the write target but no differentiating scope from siblings like create_campaign or build_ad.

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 is given against alternatives such as validate_flight, update_flight, or create_campaign. The mutation modes (validate_only/preview_only/execute) hint that validate-only is possible, but the description never says when to prefer this tool or which sibling to reach for instead.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNostudio_instructions
brandYes
briefYes
assetsNo
formatYes
seatIdNo
creativeNo
seatNameNo
templateNo
campaignIdNo
creativeIdNo
constraintsNo
advertiserIdNo
campaignNameYes
templateAnalysisNo
studioCapabilitiesNo
requestedOperationTypesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.7/5.0
Behavior5/5

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

The description goes well beyond the sparse annotations by disclosing billable AI usage, synchronous execution, forbidden task support, mutation modes, partial-failure rollback policy, response formatting rules, and idempotency-key derivation. This gives an agent important operational expectations not available from 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 organized with labeled categories and no wasted words. For a complex tool with 17 parameters, this length is acceptable, though the response-formatting guidance could be condensed.

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?

High complexity (17 params, nested objects, billable side effect, output schema) demands a clear functional definition, but the description never states what a production plan is, how inputs relate to it, or how to choose among sibling tools. The operational policies are useful but leave the core invocation context missing.

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% and the description names none of the 17 parameters, including all four required fields (brand, campaignName, format, brief). Worse, the claimed mutation modes (validate_only, preview_only, execute) do not match the schema's mode enum (planning, studio_instructions), adding confusion rather than clarifying parameter usage.

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 begins with 'create production plan,' exactly restating the tool name and title without defining what a production plan is or what it contains. 'Classification: creates billable AI usage' describes a side effect, not the tool's 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 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 leanriq_create_production_plan or create_creative_brief. Constraints like 'Task support: forbidden' and mutation modes are mentioned, but they do not help an agent decide if this is the right tool for a given request.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
seatIdNo
flightIdYes
seatNameNo
accountIdYes
approvalIdNo
campaignIdNo
creativeIdNo
resourceIdNo
advertiserIdNo
idempotencyKeyNo
expectedVersionNo

Output Schema

ParametersJSON 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 destructiveHint=true, idempotentHint=true, and readOnlyHint=false. The description adds useful generic behavioral context about mutation modes (validate_only, preview_only, execute), partial failure policy, and the deterministic idempotency-key derivation. However, it does not disclose delete-specific side effects such as whether the action is reversible or how it affects related campaigns or creatives.

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 long but front-loads a tautology and then spends most of its length on generic orchestration guidance (e.g., 'Use assistantSummary first', 'Never display raw JSON') that is unrelated to this tool. This boilerplate inflates token count and is not appropriately sized for the tool's purpose.

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 destructive tool with 12 parameters and no parameter descriptions, the description omits tool-specific behavior: what deletion does, prerequisites, effect on associated entities, and reversibility. The generic mutation modes and failure policy provide structural context, but the agent is left without the essential information needed to safely invoke delete_flight.

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 12 parameters and 0% schema description coverage, the description must compensate, but it only explains idempotencyKey and the seatId/seatName requirement. It does not clarify the roles of flightId, accountId, dryRun, expectedVersion, approvalId, or the various resource IDs. Most parameter meanings remain 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?

The description begins with 'delete flight', which is identical to the tool name and title, providing no additional specificity. It does not explain what deleting a flight entails or distinguish it from sibling tools like archive_flight or validate_flight. The rest of the text is generic mutation boilerplate 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 guidance on when to use this tool versus alternatives such as archive_flight or update_flight. The seat and idempotency rules are generic to all mutations and do not help an agent decide whether deletion is appropriate for a given task. No exclusions or alternatives are mentioned.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
seatIdNo
flightIdYes
seatNameNo
accountIdNo

Output Schema

ParametersJSON 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?

Beyond the annotations (readOnly, idempotent), the description adds meaningful context: synchronous execution, task support forbidden, returned JSON is internal state, and explicit instructions on how to present results (use assistantSummary, avoid raw JSON). This adds significant behavioral clarity.

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 consists of multiple short fragments and directives, all relevant but somewhat choppy. It could be more polished, but the information density is acceptable. Not as tight as the two-sentence ideal, so a 3 is appropriate.

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 five parameters and no schema descriptions, the lack of parameter explanation leaves a major gap. The description does provide output-handling instructions and operational constraints, but it ignores input semantics and when the tool should be invoked. The overall completeness for this complex tool is insufficient.

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 zero description coverage, and the description does not explain any of the five parameters (type, seatId, flightId, seatName, accountId). The tool description fails to compensate for the schema's lack of semantics, leaving the agent without guidance on parameter meanings.

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

Purpose4/5

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

The description clearly states the verb 'export' and resource 'trafficked assets', indicating a focused export operation. However, it does not differentiate from siblings like get_trafficked_assets, 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 Guidelines2/5

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

The description does not specify when to use this tool versus alternatives such as get_trafficked_assets or preview_trafficking_output. It mentions execution mode and task support restrictions, but these are operational constraints, not usage 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 tagB
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
seatIdNo
flightIdYes
platformNo
seatNameNo
accountIdNo
approvalIdNo
creativeIdYes
idempotencyKeyNo

Output Schema

ParametersJSON 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?

The description thoroughly discloses behavior beyond the annotations: synchronous execution, forbidden task support, mutation modes, partial failure policy, idempotency fallback, and seat-specific write constraints. This is consistent with annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false) and adds valuable 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 concise, but the description includes a lengthy block of generic response formatting instructions (assistantSummary, never display raw JSON, etc.) that are irrelevant to the tool's invocation and bloat the description. The core tool-specific details get lost in 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?

The description provides strong operational context but omits essential domain context: what an adserver tag is, the relationship between flightId/creativeId, prerequisites (e.g., existing flight or creative), and the meaning of the output JSON beyond 'internal application state'. This is a gap for a tool with a complex schema and mutation 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%, so the burden falls on the description to explain parameters. It only touches on idempotencyKey and seatId/seatName, leaving the required flightId and creativeId completely unexplained, along with platform, accountId, approvalId, and force. This is insufficient for correct parameter usage.

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 the specific verb-object pair 'generate adserver tag' and immediately classifies it as 'writes to Studio', distinguishing it from the read-only sibling get_adserver_tag. This is a clear statement of what the tool 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?

No explicit guidance is given for when to use this tool versus alternatives. While operational constraints like 'Mutation modes' and 'seatId or seatName must be supplied' are mentioned, these are requirements, not usage guidelines that help select the tool.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
seatIdNo
flightIdYes
platformNo
seatNameNo
accountIdNo
approvalIdNo
creativeIdYes
idempotencyKeyNo

Output Schema

ParametersJSON 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?

The description adds behavioral traits beyond the annotations: 'Execution: synchronous' and 'Task support: forbidden' are explicit and not present in the annotations. It also discloses that the returned JSON is internal application state for LeanrIQ/ChatGPT orchestration and gives clear response-handling rules (use assistantSummary first, never display raw JSON, mention IDs only as needed). This enriches the agent's understanding of the tool's 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 description is relatively concise, but the first sentence 'get adserver tag' is entirely redundant with the tool name. The subsequent metadata and response instructions are structured and to the point, but the tautological opening wastes space and lacks tightness.

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

Completeness2/5

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

Given the tool's complexity (9 parameters, 2 required), the description is incomplete. It focuses heavily on response formatting but fails to explain what an adserver tag is, how the parameters relate to the tag, or any practical usage context, leaving the agent under-informed 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?

None of the 9 parameters (e.g., flightId, creativeId, force) are explained in the description. With schema description coverage at 0%, the description does nothing to compensate, leaving the agent without any guidance on what values to provide.

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 adserver tag,' which simply restates the tool name without explaining what an adserver tag is or what it represents. It does not distinguish this tool from siblings like generate_adserver_tag, leaving the purpose as 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?

There is no guidance on when to use this tool versus alternatives such as generate_adserver_tag or other getters. No prerequisites, exclusions, or contextual triggers are provided, and the response-handling instructions do not aid in tool selection.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdNo
flightIdNo
seatNameNo
accountIdNo
previewIdNo
campaignIdNo
creativeIdNo
templateIdNo
advertiserIdYes

Output Schema

ParametersJSON 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, and destructiveHint, so the description's addition of 'Execution: synchronous' and 'Task support: forbidden' provides some extra behavioral context not in the structured annotations. However, the description focuses more on how to present results than on operational behavior like error handling or auth requirements.

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 five sentences, but most are dedicated to output formatting and behavioral rules (e.g., 'Never display raw JSON,' 'Prefer concise, human language') that belong in a system prompt rather than a tool description. The first sentence is a tautology, and the structure buries any useful operational detail under generic agent 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?

Given the tool has 11 parameters and no parameter descriptions, the description fails to explain what an 'advertiser' is or how the various IDs (seatId, flightId, campaignId, etc.) relate. The output schema exists, which covers return shape, but the description's vague 'internal application state' does not compensate for the lack of parameter semantics or usage context.

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%, and the description does not explain any of the 11 parameters. It never mentions advertiserId, seatId, or other fields, leaving the agent to guess that advertiserId is the primary identifier. The description adds no semantic value for choosing or filling 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 'get advertiser,' which is essentially the tool's name and title, providing no elaboration on what exactly is retrieved or returned. It does not distinguish this tool from siblings like get_campaign or get_asset, and the rest of the text is about response presentation, 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?

There is no guidance on when to use this tool versus alternatives like list_advertisers or update_advertiser. The instruction 'Use assistantSummary first' refers to response composition, not tool selection, and the 'suggest the next best LeanrIQ action' is generic advice that doesn't clarify the tool's intended use case.

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

get_assetget assetB
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdYes
flightIdNo
seatNameNo
accountIdNo
previewIdNo
campaignIdNo
creativeIdNo
templateIdNo
advertiserIdNo

Output Schema

ParametersJSON 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 read-only, idempotent, and non-destructive behavior. The description adds valuable beyond-annotation details: execution is synchronous, task support is forbidden, the returned JSON is internal orchestration state, and missing scope results in INVALID_INPUT rather than an empty result. These clarify expected behavior and failure modes. 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.

Conciseness3/5

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

The description is overly long and front-loaded with a tautological opening. Much of the content is generic response-handling instructions (never display raw JSON, use assistantSummary first) that apply to many tools, not specific to get_asset. While the scoping details are well-structured, the response-formatting boilerplate could be omitted for conciseness. Two or three sentences could convey the essential behavioral 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?

Given the tool's complexity (11 parameters, numerous sibling get_* tools), the description is incomplete. It doesn't differentiate this tool from get_creative or get_advertiser, doesn't explain the remaining parameters, and creates ambiguity by mentioning 'listing assets' without specifying the tool for that action. The output schema exists, so return values aren't a gap, but the parameter semantics and tool-selection context are insufficient.

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%, so the description must compensate. It explains the roles of assetId, advertiserId, and creativeId (as scopes), but entirely ignores the other 8 parameters (seatId, flightId, campaignId, etc.). These parameters may be filter or context fields, but their meaning and usage are never addressed. The description only partially clarifies the most critical parameters, leaving a significant semantic 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 description begins with the tautological phrase 'get asset' and only indirectly states its purpose via 'when retrieving one asset.' It implies retrieval of an asset's internal state but doesn't clearly define what an 'asset' is or how it differs from sibling tools like get_creative or get_advertiser. The scoping requirement (advertiserId/creativeId) hints at a specific resource type but lacks explicit differentiation.

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 usage context for scoping: 'pass one of those scopes together with assetId when retrieving one asset' and warns about INVALID_INPUT. However, there is no explicit guidance on when to use this tool versus alternatives like list_assets or get_creative. The instruction to 'Use assistantSummary first' is about response formatting, not tool selection. The guidance is implied rather than explicitly contrasted with sibling tools.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
brandUrlYes
seatNameNo
brandNameYes
advertiserIdNo
forceRefreshNo
requestedSectionsNo

Output Schema

ParametersJSON 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, open-world, and non-destructive behavior. The description adds value by disclosing synchronous execution, not saving to Studio, and that the returned JSON is internal application state for orchestration. It also provides response-handling constraints, such as not showing raw JSON unless explicitly requested, which goes beyond the structured 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 description is reasonably compact and front-loaded with the core purpose, but it repeats read-only information already in the title and annotations. Several sentences focus on response presentation rather than tool invocation, and there is a typo ('Studio..'). It is structured enough to be readable, 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.

Completeness3/5

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

The description covers the read-only/no-save behavior and response safety constraints, and an output schema exists, so return values need not be described in prose. However, parameter semantics for requestedSections and forceRefresh are absent, and there is no guidance relating this tool to refresh_brand_profile or the leanriq alias. Overall it is adequate for a read tool but has clear gaps.

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%, and the description provides no explanation of the seven input parameters. Required fields like brandName and brandUrl are inferable from their names, but requestedSections and forceRefresh are left undefined by both the schema and the description. With low schema coverage, the description needed to compensate and does not.

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 clear verb and resource: 'Research and return a LeanrIQ brand profile.' It also clarifies this is a read capability that does not save to Studio, which distinguishes it from mutating tools. However, it does not differentiate from the similarly named sibling leanriq_get_brand_profile or from refresh_brand_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 explicit when-to-use or when-not-to-use guidance, and no alternatives are named. The read-only/no-save phrasing implies a research use case, but it never tells an agent when to choose this tool over refresh_brand_profile or leanriq_get_brand_profile. The 'Task support: forbidden' line is cryptic and does not provide actionable selection guidance.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
optionsNo
storageNo
seatNameNo
brandNameYes
websiteUrlYes
advertiserIdYes

Output Schema

ParametersJSON 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 read-only/idempotent/non-destructive safety, so the bar is lower, and the description adds useful context: synchronous execution, task support forbidden, and that it does not persist to Studio. It omits operational traits like scraping/browser-fetch latency, failures on unreachable URLs, or rate limits for the open-world fetch.

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 and routing sentence is front-loaded and tight, but the opening sentence duplicates the title verbatim and is followed by boilerplate classification lines and a long orchestration/presentation-policy paragraph. Roughly half the text is not about tool selection.

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 carry the safety profile. However, for a tool with a 17-field options object, nested storage config, and zero schema documentation, the description leaves an agent unable to reason about how to configure 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 7 parameters, and the nested options object exposes ~17 undocumented knobs (useBrowser, scrapeSocial, includeAiGeneratedImages, storage bucket/prefix/cdnBaseUrl) with no explanation of defaults or effects. The description contributes no parameter meaning at all, leaving required advertiserId/brandName/websiteUrl and all option flags unexplained.

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 (collect) and resources (logos, imagery, colours, fonts, visual previews) plus the downstream consumer (Studio creative builds). An agent can distinguish it from get_brand_profile and refresh_brand_visuals 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 Guidelines4/5

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

Gives explicit timing ('Use this before build_ad when a campaign needs visual grounding') and a negative constraint ('does not save to Studio'). It does not name the obvious alternative, refresh_brand_visuals, or say when refresh is preferable.

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

get_campaignget campaignB
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdNo
flightIdNo
seatNameNo
accountIdNo
previewIdNo
campaignIdYes
creativeIdNo
templateIdNo
advertiserIdNo

Output Schema

ParametersJSON 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 readOnly, idempotent, and non-destructive behavior. The description adds valuable behavioral context: warns that Studio aiActivation/adBuild fields are workflow state, not creative inventory, preventing misinterpretation. It also notes the returned JSON is internal state and should not be displayed raw, which goes beyond structured annotations.

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 verbose and includes extensive presentation instructions (e.g., 'Use assistantSummary first,' 'Never display raw JSON') that are unrelated to tool selection or invocation. Essential information about purpose and alternatives is buried among general response-style guidance, reducing 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?

Although an output schema exists, the description lacks technical specifics: it does not clarify how the many optional parameters interact, what happens when multiple identifiers are provided, or error conditions. The behavioral warning about aiActivation/adBuild fields is helpful, but the tool invocation context remains 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?

With 11 parameters and 0% schema description coverage, the description provides no explanation for any parameter except an implicit mention of campaignId in the usage note. It fails to define seatId, taskId, assetId, or other parameters and their interactions, leaving the agent without semantic understanding for invocation.

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

Purpose4/5

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

The description clearly states 'get campaign' and 'Campaign metadata only,' specifying the verb and resource. It also distinguishes from sibling tools by explicitly noting it is not for creative inventory and directing to list_creatives. However, the purpose is embedded in a lengthy description with unrelated presentation guidance.

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?

Provides explicit when-to-use and alternative guidance: 'If the user asks for creatives or creative inventory for a known campaignId, call list_creatives directly; do not preflight get_campaign.' This clearly tells the agent when not to use the tool and which sibling tool to use instead.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
seatNameNo
includeHiddenNo

Output Schema

ParametersJSON 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?

Annotations already declare read-only and idempotent. The description adds that execution is synchronous, task support is forbidden, and the returned JSON is internal application state for orchestration. It also provides instructions on how to handle the response (not showing raw JSON, suggesting next steps). This adds useful behavioral context 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.

Conciseness4/5

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

The description is a series of short, directive sentences that are easy to parse. It front-loads the purpose and classification, then adds behavior and response guidelines. No unnecessary words; every sentence contributes either to purpose or usage 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?

Given the tool's simplicity (no required params, output schema present), the description still lacks essential context: it doesn't explain what capabilities are returned, how the parameters affect results, or when this tool should be chosen over sibling tools. The output schema may cover return values, but the description's focus on presentation rules leaves functional gaps.

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% and the description does not mention any of the three parameters (seatId, seatName, includeHidden). The description provides no meaning or usage hints for the parameters, so it completely fails to compensate for the missing schema descriptions.

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 starts with 'get capabilities' which clearly identifies the action and resource, but provides no scope or distinction from similar tools like get_permissions or get_current_seat. The rest of the description focuses on output formatting rather than clarifying what capabilities are. This is a clear but under-specified 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 guidance on when to use this tool vs alternatives. The description mentions using 'assistantSummary first' when responding to the user, but this is about response strategy, not tool selection. There are no explicit when/when-not or alternative tool references.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
websiteNo
seatNameNo
advertiserIdNo
competitorIdNo
competitorNameNo
includeEvidenceNo
competitorDomainNo

Output Schema

ParametersJSON 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?

Beyond annotations (readOnlyHint, idempotentHint, destructiveHint false), the description adds 'Execution: synchronous', 'Task support: forbidden', and detailed instructions on handling returned JSON (never display raw JSON, use assistantSummary, suggest next action). These are meaningful behavioral disclosures not present in structured 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 front-loaded with the primary purpose and contains useful behavioral guidance in a structured format. It has minor redundancy (first sentence repeats the title) and a double period, but it remains concise and informative for its 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?

The output schema exists, covering return values, and the description covers key behavioral constraints and usage context. However, it does not explain parameter semantics or explicitly differentiate from related tools like leanriq_get_competitor_creative_intelligence, leaving some gaps for an 8-parameter 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?

Schema description coverage is 0% and the description does not explain any of the 8 parameters (e.g., seatId, competitorId, includeEvidence). The only hint is 'advertiser-scoped competitor' in the title, which does not define parameter meaning. This is a significant gap for a tool with many parameters.

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

Purpose5/5

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

The description clearly states the verb 'Read' and the resource 'saved canonical LeanrIQ Competitor Intelligence V2 for an advertiser-scoped competitor.' It explicitly notes what it does not do ('does not reacquire evidence or generate new recommendations'), distinguishing it from sibling tools like run_competitor_intelligence.

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 context on when to use the tool (for reading saved intelligence) and explicitly excludes reacquisition or new recommendations, implying it is not for fresh generation. However, it does not name specific alternative tools, so it lacks explicit when-not-to-use references.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdNo
flightIdNo
seatNameNo
accountIdNo
previewIdNo
campaignIdNo
creativeIdYes
templateIdNo
advertiserIdNo

Output Schema

ParametersJSON 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?

The description adds useful behavioral context beyond the annotations: synchronous execution, 'task support: forbidden,' and the fact that return data is internal application state. It also provides response-handling directives (avoid raw JSON, prefer concise language) that help the agent behave correctly after invoking the tool. No contradictions with annotations.

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

Conciseness4/5

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

The description is relatively compact and front-loaded with 'get creative,' followed by a tight list of execution traits and response rules. Some redundancy exists (e.g., 'Classification: read-only' duplicates annotations), but the overall length is reasonable and the most actionable instructions are included.

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, the description is incomplete for invocation because it never explains how to use the 11 input parameters or what the tool actually does beyond 'get creative.' Annotations cover safety properties, but the agent lacks enough context to confidently select parameters or understand the tool's role.

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

Parameters1/5

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

With 0% schema description coverage, the description must explain parameters, but it does not mention a single one. The required creativeId is not described, and the 10 optional identifiers remain opaque strings with no guidance on their meaning or selection.

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,' which merely restates the tool name and title without defining what a 'creative' is or what the retrieval operation returns. It adds that the returned JSON is 'internal application state,' but this does not clarify the core purpose relative to sibling get_* tools like get_asset or get_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?

There is no explicit guidance on when to use this tool versus alternatives. The instruction to 'Use assistantSummary first' is about response composition, not tool selection, and 'Task support: forbidden' is a vague constraint without suggesting when the tool should or should not be invoked.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
seatNameNo

Output Schema

ParametersJSON 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 and non-destructive behavior, but the description adds useful context: execution is synchronous, the output is internal state for orchestration, and it instructs the agent on how to present results (e.g., suggest next action). This goes beyond the structured fields and helps the agent behave correctly with the returned data.

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 moderately sized and front-loaded with the tool name, but it includes several instruction-like sentences that could be considered general communication guidance. It is not overly verbose, but some content feels like boilerplate rather than tool-specific 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?

Given its simplicity (read-only, two optional params, output schema present), the description should clearly explain what a 'seat' is and how to use the parameters. Instead, it focuses on response handling and leaves the core semantics ambiguous. The cryptic 'Task support: forbidden' adds confusion rather than clarity.

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 two optional parameters (seatId, seatName) with 0% description coverage. The tool description does not mention these parameters at all, leaving the agent without any guidance on what they mean, when to provide them, or how they affect the result. This is a significant 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 description states 'get current seat' which is a clear verb+resource pair, and adds that it returns internal application state. However, it does not explain what a 'seat' is, nor does it distinguish this tool from similar siblings like leanriq_current_seat or list_accessible_seats. The purpose is understandable but ambiguous.

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 provides response-formatting rules such as 'Use assistantSummary first' and 'Never display raw JSON', but gives no guidance on when to use this tool versus alternatives. It does not mention prerequisites, when not to use it, or what problem it solves in the workflow. The 'Task support: forbidden' line is cryptic and not actionable.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
seatNameNo

Output Schema

ParametersJSON 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?

Beyond the readOnly/destructive/idempotent annotations, the description explicitly states synchronous execution, 'task support: forbidden', and that the returned JSON is internal application state. It provides detailed output-handling rules (don't expose raw JSON, use assistantSummary, concise human language, suggest next action). 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 longer than minimal but front-loaded with the purpose and safety classification. The later sentences cover critical output-handling rules and are not waste, though some classification details repeat annotation information. No structural clutter.

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 conveys operation type, safety, execution, and output handling, and an output schema exists. However, it omits parameter semantics and the relationship to sibling tools, leaving gaps for a tool with optional seat parameters and similar seat-related tool names.

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 input schema has two optional parameters (seatId, seatName) with 0% schema description coverage, and the description never mentions them or their purpose. The agent receives no guidance on whether or how to set them, so the description fails to compensate for the missing schema descriptions.

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 opens with 'get current user', a specific verb+resource, and the title matches. It does not explicitly distinguish from sibling tools like get_current_seat or leanriq_current_seat, but the user/seat distinction is inferable. It lacks detail on what 'current user' encompasses.

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 when-to-use or alternative selection guidance is provided. The description mentions 'Use assistantSummary first' and 'suggest the next best LeanrIQ action', but these are response-formatting directives, not tool selection criteria. It does not tell the agent when to prefer this over get_current_seat or list_accessible_seats.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdNo
flightIdYes
seatNameNo
accountIdNo
previewIdNo
campaignIdNo
creativeIdNo
templateIdNo
advertiserIdNo

Output Schema

ParametersJSON 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 provide readOnlyHint=true and idempotentHint=true, so the description's addition of 'Classification: read-only' is redundant. It does add that execution is synchronous and that task support is forbidden, which are useful behavioral hints. The note about 'internal application state' is a mild disclosure, but it doesn't detail any side effects, permissions, or limitations beyond what annotations already 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 description is relatively short but is structured as a run-on sentence that mixes operational metadata (classification, execution) with generic output formatting instructions. Some parts, such as 'Mention IDs only when useful,' are not specific to this tool and appear to be global instructions, making the description less focused than it could be.

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

Completeness2/5

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

Given the tool's complexity (11 parameters, output schema, many sibling tools), the description is incomplete. It does not explain what a flight is, what data the tool retrieves, or how it fits into the broader workflow. The presence of an output schema helps, but without context about the resource and its relationship to other tools, the description fails to provide sufficient operational context.

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 11 parameters and 0% schema description coverage, the description carries the full burden of explaining parameters like flightId, seatId, assetId, etc. It does not mention any of them, leaving the agent completely in the dark about what each parameter is for or how they relate to the tool's purpose. This is a critical gap for a tool with this many 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 begins with 'get flight,' which merely restates the tool name and provides no additional detail about what a flight represents or what the tool actually does. It fails to distinguish this tool from siblings like list_flights or get_campaign, and the mention of 'internal application state' is vague and unhelpful for understanding the resource.

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 list_flights or validate_flight. The description focuses entirely on output presentation rules (e.g., use assistantSummary, avoid raw JSON) rather than the tool's intended usage context, leaving the agent without direction on selecting the appropriate tool.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
seatNameNo

Output Schema

ParametersJSON 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, destructiveHint=false and openWorldHint=false, so restating 'Classification: read-only' is largely redundant. It does add value beyond annotations by disclosing synchronous execution, forbidden task support, and orchestration behavior (use assistantSummary first, never surface raw JSON, mention IDs only when useful). That output-handling contract is genuinely useful context not covered by structured fields, but the repetitive safety restatement dilutes 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?

The first sentence duplicates the title verbatim, which is wasted space, and the trailing period-doubling from concatenation is sloppy. The behavioral/orchestration guidance that follows is reasonably front-loaded and earns its place, but roughly a third of the text is redundant with the title and annotations.

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 the description is not obligated to document return values, and the pointer to assistantSummary is a helpful complement. What is missing is any guidance on the two undocumented seat parameters and any routing signal versus the many overlapping capability/permission/seat siblings. For a discovery/bootstrap tool in a crowded toolset, this leaves a real selection 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?

Two parameters (seatId, seatName) exist with 0% schema description coverage, and the description says nothing about them at all. An agent cannot learn what a seat ID is, whether it is required, how seatId and seatName interact, or what happens if both or neither are supplied. The description does not compensate for the schema gap in any way.

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?

It names a verb ('Describe') and a resource ('LeanrIQ outcomes... capability profile, safe starting action, boundaries'), which is more specific than a bare name restatement. However, the opening sentence is a verbatim copy of the title, so it adds no new discriminating information, and it never distinguishes itself from the sibling get_capabilities, get_permissions, or get_current_seat tools. An agent cannot tell from this text which discovery tool 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?

There is no explicit statement of when to call this versus get_capabilities / get_permissions / get_current_seat, which all plausibly answer overlapping 'what can I do' questions. The phrase 'safe starting action' hints at a bootstrap role but is not framed as usage guidance. Most of the text is output-formatting instruction aimed at the model rather than tool-selection guidance.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
extNo
seatIdNo
accountNo
contextNo
end_dateNo
seatNameNo
start_dateNo
adcp_versionNo
media_buy_idsYes
status_filterNo
time_granularityNo
attribution_windowNo
reporting_dimensionsNo
include_window_breakdownNo
include_package_daily_breakdownNo

Output Schema

ParametersJSON 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 readOnlyHint, idempotentHint, and destructiveHint, and the description adds extra behavioral context: execution is synchronous, task support is forbidden, the JSON is internal application state, and there are explicit instructions on how to present results. This goes beyond the structured annotations and helps the agent handle the response appropriately. 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 relatively concise and front-loaded with the primary purpose. It uses structured labels (Classification, Execution, Task support) and gives clear response-handling rules. Minor issues include a typo ('reporting..') and a slight ramble into presentation style, but overall it is organized and not redundant.

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?

Despite having an output schema, the tool is complex (15 params, nested objects) and the description provides no information about what delivery data is returned, how media_buy_ids are used, or what filtering options exist. The description focuses on output formatting rather than tool function, leaving the agent underinformed about when and how to invoke it effectively.

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 and 0% description coverage. The description provides no explanation of any parameter (e.g., media_buy_ids, start_date, end_date, filters). Since the schema alone is insufficient for an agent to know how to populate fields, the description's complete lack of parameter guidance is a major deficiency.

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 the tool provides 'AdCP-standard media-buy delivery reporting,' which indicates a specific resource and action (reporting on media buy delivery). It is distinct from sibling getters like get_flight or get_campaign by focusing on media buy delivery. However, it does not specify what metrics or data are included, leaving some ambiguity.

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 guidance on when to use this tool versus alternatives. It mentions the returned JSON is for 'LeanrIQ and ChatGPT orchestration' and gives response-formatting instructions, but these are not usage criteria. No exclusions or alternative tool references are provided, so the agent gets no clear decision support.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
seatNameNo
accountIdNo

Output Schema

ParametersJSON 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?

The description discloses several behavioral traits beyond annotations: execution is synchronous, task support is forbidden, and the returned JSON is internal application state not to be displayed raw. These add useful context and do not contradict the readOnlyHint/idempotentHint/destructiveHint annotations.

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 long paragraph mixing tool purpose with response-format instructions (e.g., 'Never display raw JSON', 'Suggest the next best LeanrIQ action'). This is bloated and not appropriately front-loaded; much of the content belongs in a system prompt rather than a tool description.

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?

While the tool has an output schema and some behavioral context (read-only, synchronous, internal state), the description lacks usage guidelines and parameter semantics. For a tool with three undocumented parameters and no guidance on when to use it, the description is incomplete despite the output schema covering return values.

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% and the description does not explain any of the three parameters (seatId, seatName, accountId). The description entirely fails to compensate for the missing schema descriptions, leaving the agent with no semantic guidance for parameters.

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 'get permissions' as a specific verb+resource, clearly indicating the tool retrieves permission information. However, it does not explicitly differentiate this tool from the many other 'get_*' tools in the sibling list, so it earns a 4 rather than 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 Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It mentions 'Task support: forbidden' which is a restriction, but does not state appropriate use cases or point to sibling tools. This is minimal guidance at best.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
taskIdYes
seatNameNo

Output Schema

ParametersJSON 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?

The description adds synchronous execution, forbidden task support, and detailed output-handling instructions (use assistantSummary, don't display raw JSON, suggest next action). It aligns with annotations (readOnlyHint=true) and provides context 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.

Conciseness3/5

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

The first sentence is a clear purpose statement, but the description includes redundant information (e.g., 'Classification: read-only' duplicates readOnlyHint) and a long block of output-presentation instructions that are somewhat tangential. Still, it is structured and front-loaded.

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

Completeness4/5

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

For a polling tool, the description covers purpose, source of tasks, and post-poll behavior. With an output schema present, it doesn't need to describe return structure. It lacks explicit error/retry guidance, but that is partially covered by sibling tools.

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

Parameters2/5

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

Schema has 0% description coverage; the description does not explain the three parameters (seatId, taskId, seatName). It only implies taskId via 'returned by build_ad...' but gives no semantics for seatId/seatName, leaving a significant gap for a 3-parameter tool.

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 verb ('Poll') and resource ('durable LeanrIQ task'), names the originating capabilities (build_ad, revise_creative, trafficking), and signals continuation with the completed output. This clearly distinguishes it from siblings like list_tasks, cancel_task, and retry_task.

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 specifies that tasks are returned by queued capabilities and that the agent should continue with completed output. It does not explicitly mention alternatives like list_tasks for enumeration or retry_task for failures, but the context of polling a specific task is clear, with no misleading exclusions.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdNo
flightIdNo
seatNameNo
accountIdNo
previewIdNo
campaignIdNo
creativeIdNo
templateIdYes
advertiserIdNo

Output Schema

ParametersJSON 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?

The description adds behavioral context beyond the annotations by stating execution is synchronous, task support is forbidden, and the returned JSON is internal application state. It also specifies response-handling rules (never display raw JSON, mention IDs selectively). These are useful traits not captured by the readOnly/idempotent/not-destructive hints. However, it does not disclose error behavior or the nature of template data beyond being internal 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 description is a single run-on sentence containing several instructions. It redundantly repeats 'Classification: read-only,' which is already in annotations, and includes a mix of tool purpose and global orchestration rules. It is not excessively long but lacks clear structure and could be tightened to separate purpose from response guidelines.

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?

Despite having an output schema, the description is incomplete for an 11-parameter tool with no parameter documentation. It does not explain what a template is, when to fetch it, or how the returned internal state should inform the assistant's response beyond vague formatting rules. The description leaves major gaps in domain context.

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%, and the description provides absolutely no explanation of any of the 11 parameters. Even the required templateId is undocumented in both the schema and description. The description does not compensate for the missing parameter semantics, leaving the agent to guess which IDs are needed and how they relate.

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 simply restates the name 'get template' without adding any specificity about what a template is or what getting it accomplishes. It does not distinguish this tool from siblings like list_templates or get_asset. The phrase 'internal application state' is vague and does not clarify the resource.

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 is provided on when to use this tool versus alternatives. The only usage-related instruction is 'Use assistantSummary first when responding to the user,' which is a generic response rule, not a tool-selection criterion. There is no mention of prerequisites or scenarios where this tool is preferred.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdNo
flightIdYes
seatNameNo
accountIdNo
previewIdNo
campaignIdNo
creativeIdNo
templateIdNo
advertiserIdNo

Output Schema

ParametersJSON 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?

Beyond the annotations (read-only, idempotent, non-destructive), the description adds 'Execution: synchronous' and 'Task support: forbidden', and clarifies that 'The returned JSON is internal application state' not meant for direct display. It also instructs the agent to summarize and suggest next actions, which is valuable behavioral context. No contradictions with annotations.

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

Conciseness4/5

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

The description is relatively compact and each sentence adds distinct information: classification, execution, task support, output nature, and response guidelines. It is front-loaded with the purpose and avoids unnecessary verbosity, though it lacks structured separation.

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?

Even with an output schema, the description leaves the agent without context on parameter meanings, what exactly constitutes a 'trafficked asset', or how this tool differs from export/preview variants. The high complexity (11 params, 0% schema coverage) requires more contextual guidance to be complete.

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 11 parameters with 0% description coverage, and the description provides no explanation for any parameter. It doesn't mention that flightId is required or what any of the IDs refer to. The description completely fails to compensate for the schema gap, leaving the agent without essential semantic context.

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 uses the specific verb 'get' and states the resource 'trafficked assets', clearly indicating it retrieves trafficked assets. However, it doesn't explicitly differentiate itself from sibling tools like export_trafficked_assets or preview_trafficking_output, so it lacks sibling distinction.

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 provides no guidance on when to use this tool instead of alternatives. It focuses on response formatting (e.g., 'Use assistantSummary first', 'Never display raw JSON') rather than selection criteria. 'Task support: forbidden' is a constraint, not a usage guideline.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
briefNo
forceNo
inputNo
assetsNo
promptNo
seatIdNo
taskIdNo
assetIdNo
audienceNo
campaignNo
creativeNo
flightIdNo
seatNameNo
templateNo
accountIdNo
objectiveNo
advertiserNo
campaignIdNo
creativeIdNo
templateIdNo
creativeIdsNo
persistenceNo
advertiserIdNo
instructionsNo
idempotencyKeyNo
requestedFormatsNo
skipTraffickedRebuildNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.1/5.0
Behavior4/5

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

The description explicitly states 'Execution: synchronous' and 'Task support: forbidden,' and reveals that the output is 'internal application state,' all of which go beyond the annotations. It also provides concrete handling rules (never display raw JSON unless asked, use assistantSummary first) that add behavioral context without contradicting 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 description is a compact paragraph but mixes core tool semantics with lengthy output-presentation instructions. The 'Classification: read-only' line is redundant with the annotations, making the structure less efficient than it could be.

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

Completeness1/5

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

Given 27 undocumented parameters and no output schema preview in this assessment, the description is inadequate for understanding the tool's operation. It explains neither what 'vertical intelligence' is nor how inputs relate to outputs, leaving a massive functionality 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?

The schema has 27 properties with zero descriptions, and the description does not mention any parameter or hint at how to fill them. With 0% schema description coverage, the description completely fails to compensate, leaving the agent without any semantic understanding of inputs.

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 begins with 'get vertical intelligence' which merely restates the tool name without defining what 'vertical intelligence' actually is or what it does. The added context that the returned JSON is 'internal application state for LeanrIQ and ChatGPT orchestration' hints at a purpose but remains too vague to distinguish it from sibling tools like leanriq_get_vertical_intelligence.

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?

No guidance is provided on when to call this tool versus alternatives, what problems it solves, or any exclusions. The only usage-like instruction is 'Use assistantSummary first when responding to the user,' which addresses post-call response 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.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
seatNameNo
advertiserIdNo

Output Schema

ParametersJSON 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 read-only, idempotent, non-destructive, and openWorld=false, and the description partly duplicates them ('Classification: read-only'), which earns no credit. It does add genuine behavioral context: results may be partial, it never publishes creative, opportunities are recommendations, and it discloses an orchestration contract (assistantSummary-first, no 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?

The purpose statement is front-loaded, which is good, but the rest is a pile-on of orchestration rules and metadata restatement, including a duplicated period ('creative..'), a typo ('LeanrIQ'), and annotation-derived facts that occupy space without adding information.

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, but the definition still leaves the three undocumented, all-optional parameters ambiguous and gives no routing guidance among the many intelligence siblings. The response-handling rules are the strongest part; the invocation side is thin.

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?

All three parameters (seatId, seatName, advertiserId) have 0% schema description coverage, and the description says nothing about any of them โ€” not which to prefer, not whether they are filters or selectors. The only mild signal is implied advertiser scoping in the opening sentence. This is a substantial gap the description fails to compensate for.

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 ('Get the latest advertiser World Intelligence summary') and adds scope qualifiers ('fresh, source-backed context that may be partial', 'never publishes creative') that help separate it from run_world_intelligence and get_world_opportunity. It does not explicitly name those siblings, so it falls 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?

The description gives clear guidance on how to USE the result ('Use assistantSummary first', 'Never display raw JSON'), but never says when to call this versus run_world_intelligence, get_world_opportunity, or list_world_signals. Usage is implied rather than stated, which is the definition of a 3.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
seatNameNo
advertiserIdNo
opportunityIdYes

Output Schema

ParametersJSON 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 readOnly/idempotent/destructive=false, and the description goes beyond them: synchronous execution, task support forbidden, and that the returned JSON is internal application state intended for orchestration. It also explains how to surface results to the user, which is real behavioral context, though it omits auth/permission 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?

Purpose is front-loaded and the interaction guidance is useful, but the text is boilerplate-heavy, repeats the title verbatim, and contains a doubled period ('creative..'). Some sentences serve presentation policy rather than tool selection.

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 the description rightly avoids explaining return fields and instead tells the agent to lead with assistantSummary. Combined with the execution/task-support notes and safety annotations, it is largely complete, with parameter scoping as the only notable 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% with four parameters, so the description is the only source of parameter meaning. It does not explain opportunityId (required), or the seatId/seatName/advertiserId scoping logic beyond a vague 'in the selected advertiser scope', leaving the required key 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 (Get) and a well-scoped resource (one active or historical World Intelligence opportunity plus its compact provenance) and adds a scope exclusion (does not publish creative). It is distinguishable from write/launch siblings, but it never contrasts itself with near-neighbors like get_world_intelligence or 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 Guidelines2/5

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

The description gives response-formatting guidance (use assistantSummary, never show raw JSON) but no when-to-use/when-not guidance relative to alternatives such as list_world_opportunities or get_world_intelligence. The agent must infer that this is the single-item fetch versus the list tool.

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.

ParametersJSON Schema
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
executionModeNopreview
idempotencyKeyNo
landingPageUrlNo
sourceAssetIdsNo
supportingCopyNo
thirdPartyTagsNo
durationSecondsNo
revisionRequestNo
workspaceSourceNo
performanceEvidenceNo
sourceFrameImageUrlsNo
workspaceAccessTokenNo
createCampaignIfMissingNo

Output Schema

ParametersJSON 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?

Substantially exceeds the annotations: classification as writing to Studio, creating billable AI usage, and publishing externally; synchronous execution; task support forbidden; mutation modes; partial failure policy (completed_items_not_rolled_back); deterministic idempotency-key derivation when omitted; and a hard seatId/seatName requirement on writes. Annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false, openWorldHint=true) are consistent with this, and the description adds real consequence detail beyond them.

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 clauses (Classification, Execution, Mutation modes, Partial failure policy) are well-structured and front-load the mode semantics. But the first two sentences duplicate the title verbatim (including a stray double-period), and orchestration/response-formatting boilerplate crowds out tool-specific information.

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, 51-parameter, high-consequence mutation the description covers governance, failure semantics, idempotency, and seat preconditions, and an output schema exists so return values needn't be spelled out. The remaining shortfall is that most parameters are still opaque. Reasonable but not 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?

Schema coverage is 0% across 51 parameters, so the description must carry parameter meaning, and it only explains a handful of governance-critical ones (executionMode modes, seatId/seatName, idempotencyKey). Core inputs like objective, brand, budget, creativeIds, persistence/saveToStudio, and the many date/target fields get no semantic explanation at all, leaving the bulk of the surface 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 name says launch_creative_campaign, but the description leads with runtime/mode lore ("Default preview mode works without Studio and stores research, briefs, builds, QA, and previews") rather than plainly stating that it launches a creative campaign. The actual verb+resource is only inferable, and no sibling (build_ad, build_campaign_creative_set, run_creative_chain, leanriq_launch_creative_campaign) is distinguished. Adequate but muddy.

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 does define mode-selection semantics: collaborate keeps proposals non-destructive, operate creates Studio work, and publish/traffic_ready are explicit governed actions. However, it gives no guidance on when to pick this tool over the many overlapping build_*/run_creative_chain siblings, and no exclusions.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
KPIYes
brandNo
notesNo
budgetNo
seatIdNo
billingNo
channelNodisplay
endDateNo
sandboxNo
audienceYes
operatorNo
seatNameNo
accountIdNo
objectiveYes
startDateNo
campaignIdNo
doohContextNo
funnelStageYes
targetSizesNo
advertiserIdNo
campaignNameYes
generateTagsNo
saveToStudioNo
idempotencyKeyNo
desiredVariantCountNo
strictBrandComplianceNo
createAdvertiserIfMissingNo

Output Schema

ParametersJSON 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?

Despite annotations covering safety (readOnly=false, idempotent=true, destructive=false), the description adds substantial context: billable AI usage, synchronous execution, forbidden task support, the three mutation modes (validate_only, preview_only, execute), the partial-failure policy (completed_items_not_rolled_back), and how idempotencyKey is derived on omission.

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-loaded with purpose and exclusions, then behavioral contract, then response-formatting guidance. It is densely packed but the title redundantly restates the opening sentence, and the raw-JSON/assistantSummary guidance is verbose relative to the calling decision.

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 high-complexity, 27-parameter mutation tool with an output schema, the description covers the behavioral contract (billing, mutation modes, failure policy, idempotency) and output handling guidance well. Its main gap is the near-total absence of parameter semantics, which the schema also fails to supply.

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 27 parameters, and the description explains only idempotencyKey's derivation behavior. Required inputs like KPI, audience, funnelStage, objective and the semantics of flags such as saveToStudio, strictBrandCompliance, and createAdvertiserIfMissing go undocumented in both places.

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 ('Plan and create an initial Studio creative set') and narrows the scope to 'a campaign that has no saved creatives'. It explicitly distinguishes itself from build_ad, which rebuilds the saved Studio inventory, so an agent can route correctly without opening sibling schemas.

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

Usage Guidelines5/5

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

Both the when ('campaign that has no saved creatives') and the when-not ('Do not use this tool to rebuild existing creatives; use build_ad with campaignId or campaignName') are stated explicitly, with the alternative tool and its arguments named.

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

leanriq_build_adBuild 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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
briefNo
forceNo
inputNo
assetsNo
promptNo
seatIdNo
taskIdNo
assetIdNo
audienceNo
campaignNo
creativeNo
flightIdNo
seatNameNo
templateNo
accountIdNo
objectiveNo
advertiserNo
campaignIdNo
creativeIdNo
templateIdNo
creativeIdsNo
persistenceNo
advertiserIdNo
instructionsNo
idempotencyKeyNo
requestedFormatsNo
skipTraffickedRebuildNo

Output Schema

ParametersJSON 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?

Discloses many behavioral traits beyond the annotations: 'Classification: creates billable AI usage,' 'Execution: durable,' 'Mutation modes: validate_only, preview_only, execute,' and 'Partial failure policy: completed_items_not_rolled_back.' It also explains the deterministic idempotency key derivation and the explicit seat requirement for mutations. No contradiction with annotations; in fact, it enriches the 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 description is a dense block of text, mixing tool behavior with agent output instructions ('Never display raw JSON...'). It is front-loaded with the purpose and then provides operational details, but it is verbose and could be tightened by removing user-response guidance that is not directly about tool invocation.

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 tool's complexity (27 parameters, output schema present), the description provides a high-level overview, critical operational modes, idempotency, and seat rules. However, it omits how to perform ad-hoc builds without a campaignId, how to specify individual creative/asset parameters, and how the output schema is structured. The output schema covers return values, but the parameter semantics gap leaves it 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?

The description clarifies only a handful of 27 parameters (campaignId/campaignName, persistence, seatId/seatName, idempotencyKey) in context. With schema description coverage at 0%, the description is expected to compensate but leaves the majority of parameters (brief, assets, input, template, requestedFormats, skipTraffickedRebuild, etc.) unexplained. The mention of 'saved brief, approved asset set' implies resolution via campaignId, but direct parameter semantics are largely absent.

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 'Build and save existing Studio creative records' and explains the campaign-scoped behavior. It explicitly notes 'Deprecated alias for build_ad,' which distinguishes it from sibling tools like build_campaign_creative_set and leanriq_build_agent_ad. This is a specific verb+resource statement with clear scope.

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 usage context: 'Campaign-scoped calls save by default; use persistence preview_only only for an unsaved ad-hoc preview.' It also directs users to build_ad via the 'Deprecated alias' note. However, it does not explicitly compare against all sibling build/create tools or state absolute exclusions beyond the deprecation, so a bit more alternative guidance would elevate it.

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

leanriq_build_agent_adBuild 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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
briefNo
forceNo
inputNo
assetsNo
promptNo
seatIdNo
taskIdNo
assetIdNo
audienceNo
campaignNo
creativeNo
flightIdNo
seatNameNo
templateNo
accountIdNo
objectiveNo
advertiserNo
campaignIdNo
creativeIdNo
templateIdNo
creativeIdsNo
persistenceNo
advertiserIdNo
instructionsNo
idempotencyKeyNo
requestedFormatsNo
skipTraffickedRebuildNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=false and idempotentHint=true, and the description adds substantial context: billable AI usage, durable execution, mutation modes, partial failure policy, default idempotency key derivation, and seat requirement. These details go beyond what annotations provide and give the agent a clearer picture of side effects and constraints.

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 long, dense block that mixes essential tool behavior with user-response instructions ('Use assistantSummary first... Never display raw JSON...'). This is not concise, and the structure is poorโ€”there are no clear sections, and the response-formatting guidance is arguably out of place in a tool description. The front-loaded purpose statement is the only well-structured element.

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

Completeness2/5

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

The tool is complex (27 optional parameters, mutation, several modes), and although an output schema exists, the description does not provide enough guidance on how to select or combine parameters. It only hints at campaign-scoped invocations and seat rules, leaving the agent to guess what inputs are required or appropriate. Important operational details like partial failure and billable usage are covered, but the core 'what to pass' question is unresolved.

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 must compensate, but it only explains a few parameters: campaignId/campaignName, persistence, idempotencyKey, and seatId/seatName. The many other parameters (brief, input, assets, prompt, template, etc.) are left entirely unexplained, so the agent cannot determine their meaning or how to combine them.

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 verb and resource: 'Build and save existing Studio creative records.' It goes on to describe the campaign-scoped build path, which clearly states what the tool does. It also distinguishes itself by noting 'Deprecated alias for build_ad,' directly linking to a sibling tool and clarifying its role as an alias.

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 gives explicit guidance on when to use persistence preview_only ('only for an unsaved ad-hoc preview') and notes that campaign-scoped calls save by default. It also states a critical prerequisite for mutations when multiple seats are authorized (seatId or seatName must be supplied). However, it does not explicitly say 'use build_ad instead' or enumerate exclusions, so it stops short of full alternative guidance.

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

leanriq_build_doohCreate a DOOH-native, advertiser-aware two-concept build, compare exact Studio-rendered posters, and return an editable non-interactive CreativeDocument only after bounded quality review. It does not route through Display build_ad. (deprecated alias)B
Idempotent
Inspect

Create a DOOH-native, advertiser-aware two-concept build, compare exact Studio-rendered posters, and return an editable non-interactive CreativeDocument only after bounded quality review. It does not route through Display build_ad.. Deprecated alias for build_dooh. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
copyNo
assetsNo
formatNo
seatIdNo
campaignNo
creativeNo
seatNameNo
templateNo
accountIdNo
templatesNo
advertiserNo
campaignIdNo
creativeIdNo
doohContextNo
advertiserIdNo
saveToStudioNo
strategyBriefNo
idempotencyKeyNo

Output Schema

ParametersJSON 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 annotations (readOnlyHint false, idempotentHint true, destructiveHint false, openWorldHint false), the description discloses billable AI usage, durable execution, the partial-failure policy ('completed_items_not_rolled_back'), idempotency-key derivation on mutations, and the seat-authorization requirement for writes. These are genuinely useful behavioral facts for a mutation tool. It remains somewhat boilerplate and 'bounded quality review' stays 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?

The purpose and deprecation are front-loaded, and operational facts are grouped with labeled prefixes. However, a large share of the text is response-formatting boilerplate ('Never display raw JSON...') unrelated to selecting or invoking the tool, and the first sentence is repeated verbatim 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?

An output schema exists, so return values need not be described, and the operational/authorization behavior is well covered. Against a complex 18-parameter tool with nested objects and full schema-coverage gaps on the business inputs, though, the description leaves the agent without guidance on how to populate the schema.

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

Parameters2/5

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

Schema description coverage is 0% across 18 parameters, so the description must carry the load, but it explains only idempotencyKey and the seatId/seatName write requirement. Core inputs (copy, assets, format, doohContext, campaign, creative, templates) receive no semantic explanation at all.

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 DOOH-native, advertiser-aware two-concept build') and names two siblings it relates to: it does not route through Display 'build_ad', and it is a 'deprecated alias for build_dooh'. An agent can distinguish it from build_ad and knows its canonical equivalent. The jargon-heavy phrasing slightly muddles 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 Guidelines3/5

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

The 'deprecated alias for build_dooh' note strongly implies the agent should prefer build_dooh, and mutation modes (validate_only, preview_only, execute) are listed. However, there is no explicit when-to-use/when-not-to-use statement or direct instruction to prefer the canonical tool, so routing 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_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
brandYes
offerNo
phaseNoterritories
seatIdNo
productYes
audienceYes
seatNameNo
objectiveYes
campaignIdNo
targetSizesNo
advertiserIdNo
campaignNameYes
deliverablesNo
idempotencyKeyNo
landingPageUrlNo
selectedTerritoryNo

Output Schema

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

ParametersJSON Schema
NameRequiredDescriptionDefault
briefNo
forceNo
inputNo
assetsNo
promptNo
seatIdNo
taskIdNo
assetIdNo
audienceNo
campaignNo
creativeNo
flightIdNo
seatNameNo
templateNo
accountIdNo
objectiveNo
advertiserNo
campaignIdNo
creativeIdNo
templateIdNo
creativeIdsNo
persistenceNo
advertiserIdNo
instructionsNo
idempotencyKeyNo
requestedFormatsNo
skipTraffickedRebuildNo

Output Schema

ParametersJSON 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?

Beyond the annotations, the description discloses billable AI usage, synchronous execution, partial failure behavior, idempotency retry semantics, and the requirement to use assistantSummary rather than raw JSON. No contradiction with annotations is present; the idempotentHint aligns with the deterministic retry key statement.

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 description is a long block of operational policies. It is somewhat repetitive, mentioning 'deprecated alias' in both the title and text, and the dense packing of rules reduces readability. Most sentences add value, but the structure could be improved.

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 mutation behavior, idempotency, seat requirements, and output presentation, which is useful for a complex 27-parameter tool. However, it does not address many optional params or their interactions, leaving gaps for callers needing to use force, template, instructions, or requestedFormats. Since an output schema exists, return-value details are reasonably delegated to that schema.

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

Parameters2/5

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

With 27 parameters and 0% schema description coverage, the description must carry most parameter semantics. It explains creativeIds/persistence, idempotencyKey, and seatId/seatName, and provides high-level concepts like campaign context and brand rules, but leaves many parameters (force, input, assets, template, objective, instructions, etc.) unexplained. Some referenced modes, such as validate_only and saveToStudio, do not exactly match the schema's persistence enum.

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 precise verb and resource: 'Generate Studio-ready design briefs for one or more creatives,' listing the key inputs used. It further distinguishes itself by explicitly stating it is a deprecated alias for create_creative_brief, which differentiates it from the canonical sibling tool.

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

Usage Guidelines5/5

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

It provides explicit conditional guidance: saves only when creative IDs and saveToStudio are supplied and the caller has Studio write permission, otherwise returns a non-destructive proposal. It also states execution mode, task support being forbidden, mutation modes, partial-failure policy, and the seat requirement for multi-seat writes.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
briefNo
forceNo
inputNo
assetsNo
promptNo
seatIdNo
taskIdNo
assetIdNo
audienceNo
campaignNo
creativeNo
flightIdNo
seatNameNo
templateNo
accountIdNo
objectiveNo
advertiserNo
campaignIdNo
creativeIdNo
templateIdNo
creativeIdsNo
persistenceNo
advertiserIdNo
instructionsNo
idempotencyKeyNo
requestedFormatsNo
skipTraffickedRebuildNo

Output Schema

ParametersJSON 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?

The description goes far beyond the annotations, disclosing 'writes to Studio, creates billable AI usage', synchronous execution, mutation modes, partial failure policy, deterministic retry-key derivation, and seat-authorization requirements. These are substantive behavioral traits not inferable from the readOnly/idempotent/destructive hints alone. 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.

Conciseness2/5

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

The description is a long, run-on paragraph that repeats the title and mixes tool semantics with generic agent response style instructions ('Use assistantSummary first', 'Never display raw JSON'). This is not concise; it could be trimmed to a few sentences without losing essential information.

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 operational context well (permissions, mutation modes, partial failure, idempotency, seat requirements) and notes the returned JSON is internal state. However, it is incomplete regarding the meaning and formats of the 27 input parameters. The output schema exists but does not compensate for the parameter documentation 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 27 parameters and 0% schema description coverage, the description carries full responsibility for explaining parameters. It clarifies only seatId/seatName, idempotencyKey, creativeIds, and persistence (via 'saveToStudio'). The vast majority of parametersโ€”brief, input, assets, prompt, audience, campaign, template, advertiser, objective, requestedFormats, etc.โ€”are left undefined, which is a serious gap.

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

Purpose5/5

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

The description clearly states 'Generate Studio-ready design briefs for one or more creatives' with a specific verb, resource, and scope. It also distinguishes itself by noting it is a 'Deprecated alias for create_creative_brief', which immediately differentiates it from the canonical sibling tool.

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 explicitly names the alternative tool ('Deprecated alias for create_creative_brief') and provides concrete when-to-use conditions: 'When creative IDs and saveToStudio are supplied... otherwise it returns a non-destructive proposal.' It also mandates seatId/seatName for any mutation when multiple seats are authorized, giving clear operational guidance.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNostudio_instructions
brandYes
briefYes
assetsNo
formatYes
seatIdNo
creativeNo
seatNameNo
templateNo
campaignIdNo
creativeIdNo
constraintsNo
advertiserIdNo
campaignNameYes
templateAnalysisNo
studioCapabilitiesNo
requestedOperationTypesNo

Output Schema

ParametersJSON 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?

The description adds substantial behavioral context beyond the annotations: billable AI usage (cost implication), synchronous execution, task-support prohibition, three mutation modes, partial-failure policy ('completed_items_not_rolled_back'), deterministic idempotency retry derivation, and output-handling constraints. All of this is consistent with the annotations (readOnlyHint=false, idempotentHint=true) and meaningfully enriches them.

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 front-loaded with the deprecation note and uses compact label-value metadata for operational traits. However, the opening sentence duplicates the title, and the closing response-style guidance ('Use assistantSummary first...', 'Never display raw JSON...', 'Prefer concise, human language...') runs on for several sentences of generic MCP behavior rather than tool-specific content. 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?

For a 17-parameter, nested, deprecated mutation tool, the description thoroughly covers operational aspects (billing, execution mode, failure policy, idempotency, output handling) and the output schema covers return structure. But it omits the core domain semantics: what a production plan is, what the tool produces, and how to populate the required business arguments. The agent is left guessing at input semantics from bare property names.

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, including four required ones (brand, campaignName, format, brief), and the description adds no meaning for any of them. The only parameter mentioned, idempotencyKey, is not even present in the input schema. Given the very low coverage, the description was expected to compensate but essentially ignores parameter semantics.

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 clear verb+resource ('create production plan') and explicitly flags itself as a deprecated alias for create_production_plan, which differentiates it from that sibling. However, it never explains what a production plan actually is, what creating one entails, or how it differs from other creation tools like leanriq_build_ad or create_creative_brief. The first sentence merely restates the title, leaving the core purpose conceptually vague.

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 statement is an explicit when-not-to-use signal pointing to create_production_plan as the preferred alternative. 'Task support: forbidden' and the mutation modes ('validate_only, preview_only, execute') give clear invocation constraints. Missing is positive scenario guidance for when a production plan is the right artifact to create, so it stops short of a 5.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYes
brandYes
offerNo
seatIdNo
channelNo
contextNo
productYes
audienceYes
seatNameNo
constraintsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.8/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the annotations: it creates billable AI usage, is synchronous, has mutation modes, a partial failure policy, and explains idempotency key derivation. These details are not present in the annotations, which only state idempotent, non-readonly, and non-destructive.

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 lengthy and contains many generic instructions about response formatting and idempotency that are not specific to this tool. It starts with the core purpose but is overburdened with boilerplate, making it verbose for a deprecated alias.

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?

While operational aspects (synchronous, mutation modes, failure policy) are covered, the description fails to explain any parameters, which is critical for a tool with 10 inputs. The output schema may help with return values, but the parameter gap prevents full usability.

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 input schema has 0% description coverage, and the description does not mention or explain any of the 10 parameters (e.g., brand, product, audience, goal). No guidance is provided on how to fill these fields, leaving a major gap.

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

Purpose5/5

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

The description opens with 'create creative strategy', clearly stating the verb and resource. It explicitly notes it is a deprecated alias for create_creative_strategy, distinguishing this tool from the canonical one.

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 explicitly says 'Deprecated alias for create_creative_strategy', providing a strong when-not-to-use directive and naming the preferred alternative. This gives clear guidance despite the rest being operational details.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

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

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
brandUrlYes
seatNameNo
brandNameYes
advertiserIdNo
forceRefreshNo
requestedSectionsNo

Output Schema

ParametersJSON 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, the description adds meaningful behavioral information: it does not save to Studio, executes synchronously, is forbidden for task support, returns internal application state, and includes explicit output-handling rules. These details go beyond readOnlyHint/idempotentHint and give the agent a clear picture of side effects and expected response 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?

The description is moderately long but information-dense, with purpose and side-effect statements front-loaded before response-handling guidance. Some redundancy exists with the title and annotations, such as 'read-only' and 'does not save to Studio,' but overall each sentence adds operational value. It could be tightened slightly 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?

The description does well for side effects, execution model, and output presentation, and an output schema exists to cover return structure. However, with 7 undocumented parameters and no guidance on when to invoke this tool versus refreshing or retrieving a profile via a canonical sibling, the description is not fully complete 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?

The schema has 7 parameters with 0% description coverage, so the description carries the full burden of explaining them. It mentions none of the parameters: brandName, brandUrl, seatId, seatName, advertiserId, forceRefresh, or requestedSections. The description merely says 'return a brand profile,' which does not help an agent understand what each parameter controls or how to populate them.

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 verb and resource: 'Research and return a LeanrIQ brand profile.' It also explicitly notes it is a 'Deprecated alias for get_brand_profile,' which directly differentiates it from the sibling tool name and clarifies its relationship. The read-only nature is stated clearly, leaving no ambiguity about what the tool does.

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 context: this is a read-only, synchronous, deprecated alias, and it gives response-handling guidance such as using assistantSummary first and avoiding raw JSON display. However, it does not explicitly spell out when to prefer this tool versus get_brand_profile or other research tools, though the 'deprecated alias' statement strongly implies get_brand_profile is the canonical choice.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
optionsNo
storageNo
seatNameNo
brandNameYes
websiteUrlYes
advertiserIdYes

Output Schema

ParametersJSON 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, but the description adds genuinely new traits: synchronous execution, 'Task support: forbidden', that nothing is persisted to Studio, and that the returned JSON is internal orchestration state with presentation rules (use assistantSummary first, never show raw JSON). That is well beyond the annotation set.

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 copy of the title, including the trailing double period, and is then followed by a long block of orchestration boilerplate. Redundant restatement plus tail-heavy formatting guidance means the actual useful signal (deprecated alias, doesn't save) is buried.

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 shapes need not be explained, and the description does clarify that the call does not persist anything. Still, for a 7-parameter, nested-object tool it omits anything about the required inputs and gives only an implicit deprecation signal, leaving notable 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 7 parameters, including three required ones (advertiserId, brandName, websiteUrl) and nested options/storage objects, yet the description explains no parameter, its format, or its defaults. The list of asset types loosely hints at the options object but conveys nothing actionable about required 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?

The description states a concrete verb+resource ('Collect brand logos, imagery, colours, fonts, and visual previews') and flags itself as a 'Deprecated alias for get_brand_visuals', so an agent can identify both function and canonical route. It is not differentiated from get_brand_visuals beyond the word 'alias', but the purpose itself is unmistakable.

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 a usable trigger ('Use this before build_ad when a campaign needs visual grounding') and notes the read does not save to Studio. However, for a deprecated alias the critical guidance โ€” prefer get_brand_visuals and avoid this one โ€” is only implied by the word 'Deprecated', not stated as an instruction or exclusion.

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)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.. Deprecated alias for run_competitor_intelligence. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
limitNo
domainNo
marketNo
regionNo
seatIdNo
marketsNo
websiteNo
seatNameNo
brandNameNo
advertiserIdNo
competitorIdNo
evidenceModeNoDISPLAY
forceRefreshNo
lookbackDaysNo
strategyModeNoBOTH
evidenceLimitNo
strategyModesNo
targetMarketsNo
competitorNameNo
competitorDomainNo
competitorWebsiteNo
recommendationModeNoFULL
competitorKeyMessagesNo
competitorPositioningNo
advertiserGuidanceSnapshotNo

Output Schema

ParametersJSON 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, adding that the call creates billable AI usage, is synchronous, forbids task support, supports validate_only/preview_only/execute mutation modes, applies a completed_items_not_rolled_back partial failure policy, and derives a deterministic idempotency key on omitted mutation keys. These are exactly the behavioral traits an agent needs and are not present in the structured 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 substantive purpose and behavior facts are front-loaded, but a large fraction of the text is generic output-rendering boilerplate (assistantSummary, never display raw JSON, mention IDs only when useful) that is only loosely tied to this tool, plus a stray double period. Valid content, 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?

With an output schema present, the description need not explain return values, and it does cover safety/billing/idempotency behavior well. However, for a tool with 26 parameters and zero schema descriptions, the near-total absence of parameter guidance 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?

The description touches a few parameters indirectly by naming defaults (90-day lookback, DISPLAY evidence) and explaining forceRefresh reuse, and it mentions idempotencyKey. But the schema has 26 parameters with 0% description coverage, and the vast majority (evidenceMode, strategyMode, seat/advertiser identifiers, competitor fields, recommendationMode) are undocumented 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.

Purpose4/5

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

States a specific verb and resource: run canonical LeanrIQ Competitor Intelligence V2 for one advertiser-scoped competitor, and identifies itself as a deprecated alias for run_competitor_intelligence. An agent can distinguish it from the base intelligence tool, though the 'get_' prefix sits awkwardly against a tool that actually initiates work.

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 implies the agent should prefer run_competitor_intelligence by labeling itself 'Deprecated alias', and explains the forceRefresh reuse condition, but never explicitly says 'do not call this; call the canonical tool instead' or states when/when-not this variant applies. Usage is inferable rather than directed.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
briefNo
forceNo
inputNo
assetsNo
promptNo
seatIdNo
taskIdNo
assetIdNo
audienceNo
campaignNo
creativeNo
flightIdNo
seatNameNo
templateNo
accountIdNo
objectiveNo
advertiserNo
campaignIdNo
creativeIdNo
templateIdNo
creativeIdsNo
persistenceNo
advertiserIdNo
instructionsNo
idempotencyKeyNo
requestedFormatsNo
skipTraffickedRebuildNo

Output Schema

ParametersJSON 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?

Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, but the description adds behavioral context beyond them: execution is synchronous, task support is forbidden, the returned JSON is internal application state, and output handling rules (do not display raw JSON, mention IDs only when useful). This is substantial additional transparency with no contradiction.

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

Conciseness5/5

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

The description is four sentences long, front-loaded with the name and alias, then behavioral characteristics, then output handling. Every sentence contributes distinct information, and there is no repetition or filler.

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?

While the description covers usage and output handling well, it fails to explain how to construct a request with 27 undocumented parameters. With no parameter semantics and no explanation of what 'vertical intelligence' tasks might require, the description is incomplete for actual tool invocation despite having an output schema.

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 input schema has 27 properties with zero description coverage, and the tool description does not mention any parameter names, formats, or how to use them. For a tool with no required parameters, this leaves the agent without guidance on what to pass. The description adds no value in explaining parameters.

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 'get vertical intelligence' as a verb+resource and clarifies it is a deprecated alias for get_vertical_intelligence, which distinguishes it from the canonical sibling. However, it does not define what 'vertical intelligence' means, so the agent must rely on the name or prior knowledge.

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 explicitly says 'Deprecated alias', implying that the non-deprecated get_vertical_intelligence should be preferred. It also gives concrete interaction guidance: use assistantSummary first, never display raw JSON unless asked, and suggest the next best action. These are clear when-to-use and how-to-use instructions.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
seatNameNo
advertiserIdNo

Output Schema

ParametersJSON 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, and closed-world traits, so the bar is lower. The description adds real context beyond that: results 'may be partial,' opportunities are recommendations only, it 'never publishes creative,' execution is synchronous, and the payload is internal orchestration state. That is substantive disclosure.

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 repeating the title word-for-word (including a stray double period, 'creative..'), which is pure waste. The genuinely useful deprecation notice is buried mid-paragraph behind the restatement, hurting front-loading.

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 annotations plus orchestration guidance cover safety and response handling. The gap is parameter documentation: three optional params with no semantics anywhere, which is a real omission for a tool an agent must 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?

Three parameters (seatId, seatName, advertiserId) with 0% schema description coverage, and the description says nothing about any of them โ€” no meaning, no interaction, no required/optional guidance. It does not compensate for the coverage gap, so it falls below the 0-param baseline of 4.

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 ('Get the latest advertiser World Intelligence summary') and identifies itself as a deprecated alias for get_world_intelligence, which distinguishes it from siblings. It stops short of 5 because the title text is duplicated verbatim rather than sharpening 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 Guidelines4/5

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

Explicitly routes the agent: 'Deprecated alias for get_world_intelligence,' which tells an agent to prefer the canonical sibling. It also gives response-handling guidance (use assistantSummary first, never display raw JSON). It doesn't state when the deprecated alias itself is still safe to call, 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_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)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.. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
seatNameNo
advertiserIdNo
opportunityIdYes

Output Schema

ParametersJSON 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, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds only marginal context beyond that ('Execution: synchronous', 'Task support: forbidden'), while the long orchestration paragraph concerns response presentation rather than tool behavior, so the value added is modest.

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 copied verbatim from the title (including a stray double period 'creative..'), so half the text is redundant. The trailing orchestration boilerplate about assistantSummary, raw JSON and ID display is generic padding that 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?

An output schema exists, so return values need not be explained, and the description covers the basic read-only, single-opportunity nature of the call. It is nonetheless incomplete on parameter usage and deprecation handling, and the space it does spend goes to presentation boilerplate rather than tool 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 four parameters (seatId, seatName, advertiserId, opportunityId), so the description carries the full explanatory burden. It provides no per-parameter meaning at all, only a vague reference to 'the selected advertiser scope', leaving the agent to infer how scope and opportunity IDs interact.

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 ('Get one active or historical World Intelligence opportunity and its compact provenance') plus scope (selected advertiser scope). It also distinguishes itself by declaring it does not publish creative and by naming the canonical sibling get_world_opportunity, though that differentiation is largely a restatement of its alias status.

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

Usage Guidelines3/5

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

'Deprecated alias for get_world_opportunity' implicitly steers the agent toward the canonical tool, which is genuinely useful routing. However there is no explicit when-to-use/when-not-to-use framing, no statement of when the deprecated alias is still acceptable, and no condition that selects it over the many other World Intelligence siblings.

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.

ParametersJSON Schema
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
executionModeNopreview
idempotencyKeyNo
landingPageUrlNo
sourceAssetIdsNo
supportingCopyNo
thirdPartyTagsNo
durationSecondsNo
revisionRequestNo
workspaceSourceNo
performanceEvidenceNo
sourceFrameImageUrlsNo
workspaceAccessTokenNo
createCampaignIfMissingNo

Output Schema

ParametersJSON 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?

Goes well beyond the annotations (readOnly=false, idempotent=true, destructive=false, openWorld=true) by disclosing billable AI usage, external publishing, synchronous execution, forbidden task support, partial-failure policy of completed_items_not_rolled_back, deterministic idempotency-key derivation on replay, and the requirement to pass seatId/seatName on write calls. These are exactly the operational traits an agent needs before a governed write.

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 long and partly redundant โ€“ the title paragraph is essentially repeated verbatim at the start of the description (including a doubled period '..'), and return-formatting instructions sit alongside mode semantics. Useful content is present but not front-loaded around the tool's core action.

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 51-param, high-risk governed write with an output schema, the description supplies the behavioral context that structured fields cannot (billing, publishing, partial-failure, idempotency, seat requirements) and correctly leaves return values to the output schema. The main gap is the near-total absence of per-parameter meaning.

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 51 parameters, so the description carries the full burden, yet it only adds meaning for executionMode, idempotencyKey, seatId/seatName, and persistence-adjacent modes. The other ~45 fields (brand, budget, KPI, deliverables, thirdPartyTags, workspaceSource, etc.) receive no semantic clarification, leaving most inputs 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 name, title, and 'Deprecated alias for launch_creative_campaign' line make the resource (creative campaign launch) and its relationship to the canonical sibling explicit, so an agent can route to launch_creative_campaign instead. The opening runtime-mode paragraph is dense but describes launch semantics rather than restating the name. Clear verb+resource with sibling differentiation, though the leading prose obscures the purpose slightly.

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 explains execution modes (preview default, collaborate non-destructive, operate creates Studio work, publish explicit), which is genuine invocation guidance. However, for a deprecated alias it never tells the agent to prefer the canonical launch_creative_campaign, and gives no explicit when-not-to-use-this-tool statement. Guidance is implied rather than directive.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
seatIdNo
seatNameNo
advertiserIdNo

Output Schema

ParametersJSON 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 cover the read-only/idempotent/non-destructive profile, yet the description adds real context: synchronous execution, task support forbidden, and that the output is internal application state. The human-facing presentation rules (use assistantSummary, never show raw JSON) are genuinely useful 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.

Conciseness3/5

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

The core purpose and the deprecation note are front-loaded, but the opening sentence verbatim-duplicates the title (including a stray double period) and the trailing orchestration boilerplate is generic padding that 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 values needn't be explained, and behavior/output handling is covered. The remaining gap is the four fully undocumented parameters, which an agent needs in order to invoke this 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 coverage is 0% across four parameters, and the description only implies advertiser scoping via 'one authorised advertiser'. It never explains seatId vs seatName, the limit cap of 100, or default of 25, so it fails to compensate for the undocumented 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 (list) and resource (World Intelligence creative opportunities), scoped to one advertiser, and explicitly names the canonical tool it aliases (list_world_opportunities), which distinguishes it from that sibling. The duplicated title text is redundant but not misleading.

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 list_world_opportunities' note effectively routes an agent to the preferred alternative, which is explicit guidance. It does not, however, state when the alias should still be used versus when it can be ignored.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
seatIdNo
seatNameNo
advertiserIdNo

Output Schema

ParametersJSON 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 readOnly/openWorld/idempotent/destructive, so the marginal burden is lower, yet the description adds orchestration behavior: synchronous execution, task support forbidden, and presentation rules (use assistantSummary first, never display raw JSON, suggest next actions). Some restatement of the annotations ('Classification: read-only') is redundant, but the response-handling guidance 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?

Purpose is front-loaded, but the text is bloated: the title duplicates the description verbatim, the purpose sentence repeats, and there is a long tail of orchestration boilerplate. Much of it earns its place as behavioral guidance, but the duplication and length hurt structure.

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-value explanation is unnecessary, and the deprecation notice plus presentation rules cover the main agent needs. The remaining gap is the undocumented parameters, which the structured schema also fails to describe.

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 4 parameters, so the description carries the full burden but says nothing about limit, seatId, seatName, or advertiserId. 'one authorised advertiser' faintly implies advertiserId, but there is no guidance on mutual exclusivity of seatId vs seatName or limit behavior.

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+resource ('List active, source-provenanced World Intelligence signals for one authorised advertiser') and explicitly contrasts scope against alternatives ('not a general-purpose news search'). It also identifies itself as a deprecated alias for list_world_signals, letting an agent distinguish it from siblings like get_world_intelligence or 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?

It gives clear context ('current contextual intelligence, not a general-purpose news search') and routes the agent away toward the canonical tool ('Deprecated alias for list_world_signals'). It lacks an explicit instruction to prefer the canonical tool, but the deprecation notice functions as strong usage guidance.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
brandYes
rulesNo
formatYes
seatIdNo
contextNo
creativeYes
seatNameNo
objectiveYes

Output Schema

ParametersJSON 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?

Beyond the annotations (readOnly false, idempotent true, destructive false), the description discloses billable AI usage, synchronous execution, mutation modes, partial failure policy ('completed_items_not_rolled_back'), and the internal state nature of the returned JSON. It also explains idempotency key behavior. These are significant behavioral details not available 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 description is front-loaded with a clear purpose statement, but then becomes a dense block covering response formatting and idempotency. While this information is useful, it is verbose and partially redundant (deprecation appears in both title and description). The structure is list-like but could be more concise.

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 provides substantial behavioral context (modes, failure policy, response handling) and the output schema exists, so return values are covered. However, it fails to give any guidance on the tool's required parameters, especially the nested creative object, which is a notable 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?

The description provides no explanation of the input schema parameters. Schema description coverage is 0%, and the only parameter mentioned is idempotencyKey, which is not even in the schema. Required parameters such as brand, format, objective, and creative are completely unaddressed, leaving the agent to rely on parameter names alone.

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 action: 'QA a creative for launch readiness with actionable issues, certification evidence, and next steps.' It clearly names the resource (creative) and the purpose (launch readiness). It also distinguishes itself from the sibling tool by stating 'Deprecated alias for qa_creative,' which resolves ambiguity.

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 gives explicit usage context: 'before preview, revision, or trafficking.' It also signals to prefer a different tool by labeling itself as a deprecated alias for qa_creative. Additional constraints like 'Task support: forbidden' and mutation modes further clarify when and how it should be invoked.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
intentYes
knownIdsNo

Output Schema

ParametersJSON 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_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
brandNo
dryRunNo
seatIdNo
billingNo
sandboxNo
operatorNo
seatNameNo
accountIdNo
advertiserIdNo
idempotencyKeyNo
createIfMissingNo

Output Schema

ParametersJSON 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?

The description discloses a wealth of behavioral details beyond the annotations: writes to Studio, synchronous execution, task support forbidden, mutation modes (validate_only, preview_only, execute), partial failure policy (completed_items_not_rolled_back), deterministic retry key derivation, and the explicit seat requirement for writes. This far exceeds the minimal annotation hints and provides actionable operational 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?

The description is well-structured with clear labels (Classification, Execution, etc.), but it is overly long. The final paragraph about response formatting and user interaction is generic boilerplate that applies to any tool and adds bulk without tool-specific value. It could be tightened by moving the generic style instructions to a shared location.

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?

Despite the rich behavioral metadata, the description omits the core operational semantics: what inputs are required for a resolve vs. a provision, what the output represents, and how the parameters interact. An agent cannot confidently invoke this tool based on the description alone, especially given the nested brand object and 11 loosely-typed parameters. The output schema helps, but the description does not tie parameters to 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?

With 11 parameters and 0% schema description coverage, the description carries a heavy burden. It does explain idempotencyKey behavior and the seatId/seatName requirement, but it leaves the core parameters (brand, dryRun, billing, sandbox, operator, accountId, advertiserId, createIfMissing) completely undocumented. The mention of 'mutation modes' is not mapped to any parameter (e.g., dryRun), so an agent cannot correctly set up a call without additional information.

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 begins with 'resolve or provision advertiser,' which simply restates the tool name/title without explaining what 'resolve' or 'provision' actually does. It does not clarify the conditions under which it resolves vs. provisions, nor does it distinguish this tool from siblings like create_advertiser or get_advertiser. The added detail 'Classification: writes to Studio' is a property, not a 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?

The description explicitly states 'Deprecated alias for resolve_or_provision_advertiser,' which clearly instructs the agent to prefer the canonical tool. It also provides relevant usage constraints: 'Task support: forbidden' and the seat requirement for writes. However, it does not elaborate on when to use resolve vs. provision or when to choose this over sibling tools, 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.

leanriq_run_creative_chainrun creative chain (deprecated alias)C
Idempotent
Inspect

run creative chain. Deprecated alias for run_creative_chain. 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.

ParametersJSON Schema
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
idempotencyKeyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.8/5.0
Behavior5/5

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

Discloses rich behavioral traits beyond annotations: writes to Studio, creates billable AI usage, synchronous execution, forbidden task support, mutation modes, partial-failure policy (completed_items_not_rolled_back), idempotency key derivation, and seat-required-on-write rule. These details complement the idempotentHint and readOnlyHint 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.

Conciseness3/5

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

The description is dense but long, with redundant deprecation info (both the title and description mention 'deprecated alias') and an extensive response-handling paragraph that could be tightened. It is structured with periods and categories, but not as concise as it could be.

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?

Operational behavior is thoroughly covered, but the core domain purpose is missing: what a creative chain is, what it produces, and how to select appropriate values for the 30 inputs. With no schema descriptions and minimal parameter guidance, the tool is hard to invoke correctly despite the detailed behavioral context.

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 30 optional parameters. The description only clarifies idempotencyKey and seatId/seatName semantics; all other parameters (KPI, goal, brand, audience, creativeIds, etc.) are left completely unexplained, forcing agents 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 restates the tool's name ('run creative chain') and notes it's a deprecated alias, but never explains what a creative chain is or what it accomplishes. The classification 'writes to Studio' hints at write behavior, but the core domain purpose is absent, making this only marginally better than 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 Guidelines3/5

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

The description explicitly names the canonical tool (run_creative_chain) as the non-deprecated alternative, which is a strong when-not signal. It also notes 'Task support: forbidden' as an exclusion. However, it provides no guidance on when a creative chain should be used versus other creative-building tools like build_ad or create_creative_brief.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
policyNo
seatIdNo
routineNo
seatNameNo
routineIdNo
advertiserIdNo
forceRefreshNo
lookbackHoursNo
advertiserContextNo

Output Schema

ParametersJSON 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 idempotentHint=true, destructiveHint=false and readOnlyHint=false, so the safety profile is partially covered. The description adds genuinely useful context beyond that: it 'creates billable AI usage,' execution is 'durable,' partial failure preserves qualified evidence, it 'never publishes or activates creative,' and a mutation with multiple authorised seats requires seatId/seatName on the exact call. Some remaining text (assistantSummary/raw-JSON output etiquette) is generic boilerplate rather than trait-specific.

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 sentence duplicates the title verbatim (including a doubled period) and is followed by a long block of generic orchestration/output boilerplate. Several sentences earn their place (deprecation, billing, seat rule); others 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-format explanation is unnecessary. For a 9-parameter tool with deeply nested objects at 0% schema coverage, however, the description answers key operational questions (billing, durability, seat requirement) but leaves the bulk of the input model โ€” what a 'policy' or 'routine' call vs a plain run looks like โ€” unresolved.

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 9 top-level parameters containing deep nested objects (policy, routine, advertiserContext). The description only addresses idempotencyKey derivation and the seatId/seatName write requirement, leaving policy, routine, advertiserContext, forceRefresh, lookbackHours and routineId entirely undocumented. 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 opening states a specific verb and resource: 'Run bounded, current World Intelligence for one authorised advertiser,' and clarifies the output is 'source-backed external context and creative opportunities.' It also flags that this is a deprecated alias of run_world_intelligence, which is a distinguishing trait, though it never contrasts itself against get_world_intelligence or the other world-* 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 'Deprecated alias for run_world_intelligence' note implies an agent should prefer the canonical tool, and the mutation-mode list (validate_only, preview_only, execute) hints at call variants, but there is no explicit when-to-use / when-not-to-use statement or an instruction like 'use run_world_intelligence instead.' Usage is left largely to inference.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
seatNameNo

Output Schema

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
seatIdNo
seatNameNo
accountIdNo
approvalIdNo
campaignIdYes
advertiserIdYes
opportunityIdYes
idempotencyKeyYes
expectedVersionNo

Output Schema

ParametersJSON 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 (idempotentHint=true, destructiveHint=false) by disclosing classification (writes to Studio), synchronous execution, forbidden task support, the three mutation modes, the partial-failure policy (completed_items_not_rolled_back), deterministic retry-key derivation when idempotencyKey is omitted, and the rule that seatId/seatName must be supplied on the exact write call. These are exactly the side-effect and precondition details an agent needs before mutating state.

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

Conciseness5/5

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

Back-loaded with metadata and slightly redundant (the title is repeated verbatim, including a stray 'publish..'), yet the sentence count is small and the opening clause front-loads the purpose before the operational constraints.

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 mutation tool with an output schema (so return values need no explanation) plus display guidance ('use assistantSummary first', don't dump raw JSON), the description is nearly complete on side effects, idempotency, and seat preconditions. The remaining gap is the deprecation routing โ€” it never tells the agent to prefer select_world_opportunity_for_campaign โ€” and no hint about expectedVersion concurrency.

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 10 parameters, so the description carries the full burden โ€” and it explains only a few: idempotencyKey fallback behavior and the seatId/seatName requirement for multi-seat writes. advertiserId, campaignId, opportunityId, accountId, approvalId, expectedVersion, and dryRun receive no semantic explanation, leaving substantial gaps despite the useful coverage of the two hardest parameters.

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 ('select one reviewed, source-provenanced World Intelligence opportunity for an authorised Studio campaign') and explicitly bounds the scope ('does not materialise a feed, create creative, traffic, or publish'). It also names its canonical sibling by flagging itself as a 'deprecated alias for select_world_opportunity_for_campaign', which lets an agent distinguish it, though it never states outright that the canonical tool should be preferred.

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 only implied: the 'deprecated alias' label signals this is not the tool to reach for, and the seat requirement plus mutation modes (validate_only, preview_only, execute) sketch the operational context. There is no explicit 'use this when / use X instead when' statement, so the agent must infer the routing decision.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
seatNameNo

Output Schema

ParametersJSON 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?

Beyond the annotations, the description discloses synchronous execution, 'Task support: forbidden', and that the returned JSON is 'internal application state' for orchestration. It also prescribes response formatting rules, adding useful context that is consistent with the readOnlyHint and idempotentHint annotations.

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 buries the core purpose under repeated classifications and imperative formatting directives. Phrases like 'Classification: read-only' and 'Execution: synchronous' duplicate what annotations already express, making it longer than necessary.

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 covers return values, and annotations cover safety, but the description omits usage/selection criteria and parameter semantics. It does add valuable orchestration context, but key gaps remain.

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

Parameters2/5

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

The description does not mention seatId or seatName, and the input schema has no descriptions (0% coverage). The optional filter parameters are unexplained, leaving the agent to infer meaning from the property names alone.

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 'list accessible seats' with a specific verb and resource, clearly identifying the tool's function. However, it does not differentiate from sibling list_* tools or clarify what 'accessible' means in this context.

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 is provided on when to choose this tool over alternatives such as get_current_seat or list_advertisers. The only usage-related instructions concern response formatting ('Use assistantSummary first') and internal-state handling, not selection criteria.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
seatIdNo
statusNo
seatNameNo
accountIdNo
campaignIdNo
creativeIdNo
advertiserIdNo

Output Schema

ParametersJSON 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), the description adds that the returned JSON is 'internal application state for LeanrIQ and ChatGPT orchestration,' and instructs not to display raw JSON to users. It also notes synchronous execution and forbids task support, providing additional 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.

Conciseness3/5

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

The description contains useful directives but is padded with a tautological first sentence and repetitive classification lines. The response-formatting guidance is clear but could be condensed.

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

Completeness2/5

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

Given nine undocumented parameters and an existing output schema, the description is incomplete. It lacks parameter semantics, pagination behavior, and differentiation from sibling tools, though it does provide some response-handling 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?

With 0% schema description coverage, the description must explain the nine parameters, but it mentions none of them. There is no information about limit, cursor, seatId, status, or other filters, leaving the agent to guess their semantics.

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 merely restates the tool name and title. It does not specify what the tool returns, whether it lists all advertisers in the current seat, or any filtering semantics, thus failing to distinguish it from sibling 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 provides no guidance on when to use list_advertisers versus get_advertiser or other list_* tools. It focuses on response presentation (e.g., 'Use assistantSummary first') rather than tool selection context.

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

list_assetslist assetsA
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
seatIdNo
statusNo
seatNameNo
accountIdNo
campaignIdNo
creativeIdNo
advertiserIdNo

Output Schema

ParametersJSON 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?

Beyond the readOnlyHint and idempotentHint annotations, the description discloses synchronous execution, forbids task support, and details response handling (never display raw JSON, use assistantSummary, mention IDs only when useful). It also reveals error behavior (INVALID_INPUT rather than empty result) and that the returned JSON is internal state, all adding significant transparency.

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 reasonably compact but includes a long block about response formatting that, while valuable, could be streamlined. It is front-loaded with the core purpose and classification, and each sentence carries information, though the assetId retrieval note feels tangential.

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 of 9 parameters and the existence of an output schema, the description explains the critical scoping requirement and error handling but omits parameter semantics for most filters and does not clarify what assets are relative to creatives or advertisers. The confusing assetId sentence further reduces completeness, though the output schema likely covers return values.

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 9 parameters and 0% schema coverage, the description must compensate, but it only explains advertiserId and creativeId as scopes and confusingly mentions assetId (not in the schema) for retrieval. Other parameters like limit, cursor, status, seatId, seatName, accountId, and campaignId are left undocumented, leaving the agent without essential 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 clearly states the tool lists assets and specifies that assets are scoped resources requiring advertiserId or creativeId. However, it does not explicitly distinguish 'assets' from sibling list tools like list_creatives or list_advertisers, and the mention of retrieving a single asset with assetId blurs the line with get_asset.

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

Usage Guidelines3/5

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

The description provides context on when to use the tool: listing assets within a scope, and explains that missing scope leads to INVALID_INPUT. It does not explicitly name alternatives or say 'use get_asset for single asset retrieval,' though the scoping hints are helpful. The response formatting instructions ('Use assistantSummary first') are more about agent behavior than tool selection.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
seatIdNo
statusNo
seatNameNo
accountIdNo
campaignIdNo
creativeIdNo
advertiserIdNo

Output Schema

ParametersJSON 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 read-only, idempotent, and non-destructive behavior. The description adds that execution is synchronous, task support is forbidden, and the returned JSON is internal application state for orchestration. This supplements the annotations, but it doesn't cover pagination, filtering behavior, or response structure beyond what the schema indicates.

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 compact and front-loaded with 'list campaigns,' but it mixes tool semantics with a block of response-handling instructions. Some content is redundant (e.g., repeating 'list campaigns' followed by a classification), though each sentence carries useful guidance for the agent's interaction.

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?

Despite having an output schema and a high number of optional parameters, the description omits parameter semantics and filter behavior. The tool's operational completeness relies entirely on parameter names, which are insufficient for effective use. The description focuses on output presentation rather than tool behavior, leaving significant gaps.

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%, and the description does not explain any of the 9 parameters. All parameters are optional and lack descriptions in the schema, so the agent has no semantic guidance on what 'limit,' 'cursor,' 'status,' etc. mean or accept. The description completely fails to compensate for the schema's lack of parameter documentation.

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 opens with 'list campaigns,' a clear verb+resource pair that matches the tool name and differentiates from sibling tools like get_campaign (singular retrieval) and list_advertisers (different resource). However, it doesn't elaborate on the scope of campaigns returned, making it clear but minimal.

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 provides only output-handling instructions ('Use assistantSummary first,' 'Never display raw JSON') and no guidance on when to use this tool versus alternatives. No exclusions, alternative tools, or selection criteria are mentioned.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
seatIdNo
websiteNo
seatNameNo
advertiserIdNo
competitorIdNo
competitorNameNo
includeEvidenceNo
competitorDomainNo

Output Schema

ParametersJSON 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 (readOnly, idempotent, non-destructive), the description adds concrete behavioral context: execution is synchronous, task support is forbidden, and the returned JSON is internal state with specific instructions on how to present results to the user (use assistantSummary, avoid raw JSON, suggest next actions). This significantly enhances the agent's understanding of expected 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?

The description is front-loaded with the core purpose, then adds a data caveat, followed by execution and response-handling instructions. It is somewhat verbose but each sentence adds meaningful context, especially the user-interaction rules. It earns its place, though it 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?

With an output schema and clear annotations, the description covers the tool's safety profile and output presentation well. However, given 9 optional parameters and no parameter descriptions, the tool's filtering capabilities and exact behavior remain underspecified. It is adequate but not complete for complex use.

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 0% and the description does not explain any of the 9 parameters. While parameter names and types are visible in the schema, the description provides no additional meaning about how filters like limit, website, or competitorId affect results. The description must compensate for zero schema coverage but fails to do so.

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 action (list), resource (qualified display evidence from saved canonical LeanrIQ Competitor Intelligence V2), and explicitly clarifies that cross-channel inspiration is not mixed in, distinguishing it from sibling intelligence tools. This makes the tool's purpose unambiguous and well-differentiated.

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

Usage Guidelines4/5

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

The description implies this tool is for display evidence specifically and mentions it does not include cross-channel inspiration, giving a clear context for when to use it. However, it does not explicitly name alternative tools or provide direct when-not-to-use guidance, so it stops short of a 5.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
seatIdNo
statusNo
seatNameNo
accountIdNo
campaignIdNo
creativeIdNo
advertiserIdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.2/5.0
Behavior4/5

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

The description adds meaningful behavioral context beyond the annotations: it specifies 'Execution: synchronous,' 'Task support: forbidden,' and notes that the returned JSON is internal application state for orchestration, advising against displaying raw JSON. These details are not present in the readOnlyHint, idempotentHint, or destructiveHint annotations. No contradiction with annotations exists.

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 moderately concise, but it front-loads the tautological 'list competitors' and then devotes most of its length to response-handling directives. The classification and execution details are useful, but the structure could be improved by leading with a substantive purpose statement and moving the orchestration notes to the end.

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 9 undocumented parameters, no definition of 'competitors,' and no distinction from sibling competitor-intelligence tools, the description fails to provide sufficient context for an agent to decide when or how to call this tool. The presence of an output schema helps interpret returns, but the opaqueness of the inputs and the tool's place in the broader workflow remain significant gaps.

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 lists 9 parameters with 0% description coverage, and the tool description provides absolutely no explanation of limit, cursor, seatId, status, seatName, accountId, campaignId, creativeId, or advertiserId. The description does nothing to compensate for the complete lack of parameter 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 description opens with 'list competitors' which merely restates the tool name without explaining what competitors are or how they relate to other competitor-related tools. It provides no differentiation from siblings like get_competitor_intelligence or leanriq_get_competitor_creative_intelligence, leaving the agent unable to determine the tool's specific scope and purpose.

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?

No guidance is given on when to use this tool versus alternatives. The only operational instruction ('Use assistantSummary first when responding to the user') concerns response formatting, not tool selection. The description lacks any mention of appropriate contexts, prerequisites, or exclusions.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
seatIdNo
statusNo
seatNameNo
accountIdNo
campaignIdNo
creativeIdNo
advertiserIdNo
campaignNameNo
advertiserNameNo

Output Schema

ParametersJSON 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?

Annotations already mark the operation as read-only, idempotent, and non-destructive. The description adds valuable behavioral context: execution is synchronous, task support is forbidden, the response is internal state, a compact inventory is returned, and an empty result is authoritative. 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.

Conciseness3/5

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

The description is somewhat bloated, with multiple sentences about response formatting and user interaction (e.g., 'Use assistantSummary first', 'Never display raw JSON') that go beyond tool invocation. The core purpose is front-loaded, but the length and repetition reduce conciseness.

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 list tool with 11 parameters, no schema descriptions, and an output schema, the description is thorough. It covers the primary use cases, return content (creative names, IDs, sizes, statuses), the meaning of empty vs non-empty rows, and contrasts with get_creative. An agent has enough context to select and invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds guidance for campaignId, campaignName, advertiserId, and advertiserName, and mentions central pagination. However, it does not explain limit, cursor, status, seatId, seatName, accountId, or creativeId, leaving some parameters semantically unexplained. Partial compensation only.

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 'List Studio creatives' and establishes the tool as the authoritative saved creative inventory. It clearly distinguishes from siblings like get_creative (which provides full internals) and explicitly instructs to call this tool directly rather than get_campaign first, making its purpose and scope unambiguous.

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?

Provides explicit when-to-use guidance: prefer campaignId for deterministic reads, pair campaignName with advertiserId or advertiserName, and call directly as the first and only inventory read. Also states when to use get_creative instead and warns not to call get_campaign first, giving clear boundaries against alternatives.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdNo
flightIdNo
seatNameNo
accountIdNo
previewIdNo
campaignIdNo
creativeIdYes
templateIdNo
advertiserIdNo

Output Schema

ParametersJSON 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=true and idempotentHint=true. The description adds 'Execution: synchronous' and 'Task support: forbidden,' which are not in the annotations. It also clarifies that returned JSON is internal state, guiding display behavior. This adds meaningful context beyond the structured 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.

Conciseness3/5

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

The description is five sentences. The first sentence just restates the tool name and title, adding little value. The subsequent sentences provide useful operational instructions but are somewhat generic and could be trimmed or consolidated. It is not excessively long, but it contains some redundancy.

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

Completeness2/5

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

Given the tool's complexity (11 params, no param docs) and the existence of an output schema, the description still leaves significant gaps. It does not explain what a 'creative version' is, the relationship to creativeId, or typical use cases. The output schema covers return values, but domain context and parameter semantics are missing, making the tool under-specified.

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 description entirely omits parameter explanations, and schema description coverage is 0%. With 11 parameters and only one required, the agent receives no guidance on what seatId, taskId, assetId, etc., represent or how they relate to the operation. The description fails to compensate for the lack of schema documentation.

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 clear verb and resource: 'list creative versions.' The tool name and title align, and the operation is unambiguous. However, it does not explicitly distinguish itself from sibling tools like 'list_creatives' or 'get_creative', though the resource name provides some 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 description provides no guidance on when to use this tool versus alternatives. It includes a 'Task support: forbidden' constraint and output presentation rules, but these are more about how to behave after invocation rather than when to select the tool. There is no mention of prerequisites, context, or exclusions, leaving the agent to infer usage.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
seatIdNo
statusNo
seatNameNo
accountIdNo
campaignIdNo
creativeIdNo
advertiserIdNo

Output Schema

ParametersJSON 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 and idempotent safety. The description adds behavioral context beyond that: synchronous execution, task support forbidden, returned JSON is internal orchestration state, and explicit rules about not exposing raw JSON. These are valuable non-obvious traits that help the agent handle output appropriately.

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 reasonably structured but somewhat lengthy, with nine sentences mixing purpose, classification, and generic assistant behavior. It front-loads the purpose but includes redundant classification (read-only) already in annotations, making it less concise than ideal.

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

Completeness2/5

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

For a tool with 9 optional params and an output schema, the description lacks crucial context: what a flight is, what filters can be applied, how pagination works, and any caveats about data scope. The response-formatting guidance is helpful but does not compensate for missing parameter/return 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?

Schema description coverage is 0%, and the description provides no explanation for any of the 9 parameters (limit, cursor, seatId, status, etc.). An agent cannot infer what each filter means or how to use pagination, making correct invocation very difficult.

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

Purpose4/5

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

The description clearly states 'list flights' with a distinct verb and resource, distinguishing it from singular 'get_flight' and other list tools. It does not elaborate on what a flight is or what subset is returned, but the core 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 Guidelines2/5

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

The description offers no guidance on when to use this tool versus alternatives like get_flight or list_campaigns. It includes response instructions (e.g., 'Use assistantSummary first') but no context about prerequisites, exclusions, or comparison with sibling tools.

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

list_taskslist tasksB
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
seatIdNo
statusNo
seatNameNo
accountIdNo
campaignIdNo
creativeIdNo
advertiserIdNo

Output Schema

ParametersJSON 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?

The description adds significant behavioral context beyond the readOnly/idempotent annotations: it declares synchronous execution, forbidden task support, that the JSON is internal orchestration state, and gives explicit response handling rules. 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 front-loaded with the purpose and then organized into classification, execution, and response guidance. Each sentence contributes, though the first sentence is redundant with the title and the metadata is slightly list-like.

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?

Despite a rich output schema and annotations, the tool has 9 optional parameters with zero documentation. The description covers response presentation well but omits invocation-time details like when to call the tool and how to populate filters/pagination, so it is incomplete 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% with 9 undocumented parameters, and the description provides no parameter semantics such as filter behavior, pagination via limit/cursor, or accepted status values. The param names are minimally self-explanatory but the description adds nothing.

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 opens with 'list tasks', a clear verb+resource statement. However, it does not distinguish this tool from sibling list operations or clarify the task scope beyond 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?

No guidance is provided on when to use list_tasks versus alternatives such as get_task or other list_* tools. The response-formatting instructions ('Use assistantSummary first', 'Never display raw JSON') are useful but do not help with tool selection.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
seatIdNo
statusNo
seatNameNo
accountIdNo
campaignIdNo
creativeIdNo
advertiserIdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.1/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond the annotations: it states that execution is synchronous, task support is forbidden, and the returned JSON is internal application state. It also provides response-handling instructions (e.g., never display raw JSON, use assistantSummary first), which clarify the nature of the tool's output. No contradiction with the readOnlyHint, idempotentHint, or destructiveHint annotations.

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 padded with several sentences of generic response-formatting instructions ('Use assistantSummary first,' 'Never display raw JSON,' etc.) that could apply to any tool. These instructions distract from the core purpose, which is stated only tautologically. A concise, informative description would focus on the tool's function and parameters.

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?

Despite having an output schema and annotation hints, the description is functionally incomplete. It fails to explain what templates are, what the filter parameters do, or when to use this tool. The operational notes about output handling are present but do not compensate for the missing core functionality and usage context.

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 input schema has 9 optional parameters with 0% schema description coverage, and the tool description does not mention any of them. limit, cursor, seatId, status, accountId, campaignId, creativeId, and advertiserId are left completely unexplained, leaving the agent without any understanding of their meaning or how to use them for filtering and pagination.

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 begins with 'list templates,' which is a direct restatement of the tool's name and title, offering no new information about what templates are or what the tool does. It lacks any scope, differentiating details, or context that would distinguish it from sibling list tools such as list_campaigns or list_creatives.

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?

The description gives no guidance on when to use this tool versus alternatives. It includes 'Task support: forbidden' but that is a constraint, not a usage scenario. There is no mention of use cases, prerequisites, or the kind of queries that would make list_templates the appropriate choice.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
seatIdNo
seatNameNo
advertiserIdNo

Output Schema

ParametersJSON 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 reinforces read-only while adding genuinely new context: synchronous execution, task support forbidden (so it is not a background/async task), and that the returned JSON is internal orchestration state. The presentation rules (use assistantSummary, never show raw JSON) are useful behavioral guidance. It does not contradict 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?

Front-loaded with the purpose, but it opens by restating the title verbatim (including a doubled period) and then appends a long boilerplate block of presentation rules. The behavioral notes earn some place, yet the duplicated title and run-on formatting contain clear waste.

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 spelled out, and the annotations plus description cover the safety profile and output-handling expectations. However, with four undocumented optional parameters and no selection guidance versus siblings, the definition is only adequately complete for an agent to call 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 four parameters (limit, seatId, seatName, advertiserId), so the schema alone leaves them undocumented. The description compensates only implicitly via 'one authorised advertiser' and adds nothing about limit bounds, seat identification, or required combinations, leaving the semantics largely 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 (list active World Intelligence creative opportunities) scoped to one authorised advertiser, and clarifies what an opportunity is (human-review recommendation that never publishes creative). It does not name a sibling (e.g., get_world_opportunity or list_world_signals) to distinguish itself, 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 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 and no routing to alternatives such as get_world_opportunity for a single item or list_world_signals for signals. The 'never publish creative' line clarifies scope but does not tell the agent when to pick 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.

list_world_signalsList active, source-provenanced World Intelligence signals for one authorised advertiser. This is current contextual intelligence, not a general-purpose news search.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.. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
seatIdNo
seatNameNo
advertiserIdNo

Output Schema

ParametersJSON 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 read-only, idempotent, non-destructive, closed-world, yet the description adds genuinely new behaviour: synchronous execution, task support forbidden, and a fairly detailed response protocol (assistantSummary first, never dump raw JSON, mention IDs only for follow-up). That is real value beyond annotations. It loses a point for the ambiguous 'Task support: forbidden' phrasing with no explanation of what that constrains.

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 copy of the title, and the second half is a lengthy presentation policy that reads as system-prompt material rather than tool documentation. It is front-loaded, but several sentences could be cut or moved 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 no explanation, and the presentation protocol is a nice addition. The decisive gap is that a four-parameter tool with zero schema coverage leaves the agent guessing at every argument, which no amount of prose about formatting compensates for.

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?

Four parameters with 0% schema description coverage, and the description accounts for none of them. Only the title's phrase 'for one authorised advertiser' loosely hints at advertiserId; limit, seatId, and seatName โ€” including how seatId vs seatName are meant to interact โ€” are completely 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?

States a specific verb (List), resource (World Intelligence signals), and scope (active, source-provenanced, one authorised advertiser), and explicitly excludes the general-purpose news-search reading. It does not, however, distinguish itself from near-neighbours like list_world_opportunities, get_world_intelligence, or leanriq_list_world_signals, so an agent still has to infer which of the family 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 Guidelines3/5

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

Gives one useful exclusion (not a general-purpose news search) but never says when to call this versus get_world_intelligence, list_world_opportunities, or the leanriq_ variants. The large fraction of the text dedicated to user-facing presentation rules is guidance about output, not about tool selection.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
dryRunNo
seatIdNo
flightIdYes
seatNameNo
accountIdYes
approvalIdNo
creativeIdNo
idempotencyKeyNo

Output Schema

ParametersJSON 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?

Annotations already declare readOnly, idempotent, and non-destructive. The description adds useful behavioral context: execution is synchronous, task support is forbidden, and the returned JSON is internal application state for LeanrIQ/ChatGPT orchestration. It also warns against displaying raw JSON, which is valuable beyond the structured metadata.

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 moderately sized and front-loaded with the purpose. It packs in behavioral and response-related information efficiently, but several sentences about response formatting (assistantSummary, raw JSON) may be beyond the tool's core scope. Still, it is not overly verbose and each sentence adds some 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?

Given 9 parameters, an output schema, and many sibling tools, the description is under-specified. It fails to explain the tool's functional role in trafficking, what the parameters control, or how to interpret the output. The mention of internal state provides some context, but it does not enable correct invocation without relying on external knowledge.

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%, and the description does not mention any of the 9 parameters (accountId, flightId, creativeId, etc.) or the optional flags (force, dryRun). The description fails entirely to compensate for the missing parameter explanations, leaving the agent without semantic guidance for 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 description states a clear verb ('preview') and resource ('trafficking output'), but does not define what 'trafficking output' entails or distinguish this tool from siblings like get_trafficked_assets or get_preview_link. It lacks specificity about what is being previewed (e.g., for a flight or 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 guidance on when to use this tool versus alternatives. The description only provides response-formatting instructions ('Use assistantSummary first', 'Never display raw JSON') and does not mention prerequisites, exclusions, or when this tool is preferred over other preview or trafficking tools.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
seatNameNo
accountIdNo
approvalIdNo
campaignIdNo
workspaceIdYes
advertiserIdNo
campaignNameNo
idempotencyKeyNo

Output Schema

ParametersJSON 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?

The description goes beyond annotations by disclosing 'writes to Studio, creates billable AI usage', durable execution, mutation modes, partial failure policy, and detailed idempotency behavior (deterministic retry key when idempotencyKey is omitted). This is rich context that annotations only hint at.

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 verbose, repeats the title verbatim, and includes generic response-handling boilerplate (e.g., 'Use assistantSummary first', 'Never display raw JSON') that is not tool-specific. The core information is buried in a 200+ word 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?

The description provides strong behavioral context (idempotency, failure policy, seat requirements) and an output schema exists for return values. However, it lacks parameter semantics and explicit usage guidance relative to siblings, leaving notable gaps for a 9-parameter 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?

Schema description coverage is 0%, so the description must compensate, but it only explains workspaceId, idempotencyKey, and seatId/seatName. Parameters like accountId, approvalId, campaignId, advertiserId, and campaignName remain unexplained, leaving agents without enough meaning to populate them confidently.

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 specific action: 'Deliberately promote one approved LeanrIQ creative workspace into Studio'. It also distinguishes itself from siblings by noting the idempotent behavior (repeated promotion returns recorded result), which sets it apart from create/launch 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?

No explicit when-to-use or alternative tool guidance is provided. The description focuses on operational details and response formatting rather than when to choose this tool over sibling tools like leanriq_launch_creative_campaign or create_campaign. Usage is only implied by the word 'promote'.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
feedbackYes
flightIdNo
seatNameNo
accountIdYes
creativeIdNo
idempotencyKeyYes

Output Schema

ParametersJSON 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?

The description goes well beyond the annotations, disclosing execution type (synchronous), task support (forbidden), mutation modes (validate_only, preview_only, execute), partial failure policy (completed_items_not_rolled_back), and how idempotency is derived when idempotencyKey is omitted. It also clarifies the response format and seat requirements for multi-seat scenarios, which are valuable behavioral details 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.

Conciseness4/5

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

The description is compact and front-loaded with key operational facts (classification, execution, mutation modes, partial failure), followed by response guidelines. Some content, such as 'Never display raw JSON' and 'Prefer concise, human language', is more about assistant behavior than tool semantics, but it doesn't bloat the description excessively. Overall, it's efficient and structured.

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 complexity (7 params, nested feedback object, no schema descriptions), the description covers many critical aspects: mutation modes, partial failure, idempotency, seat handling, and the nature of the returned JSON. However, it omits details about what the feedback payload should contain and how to use validate_only vs preview_only vs execute, which leaves some gaps for full invocation.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It does explain idempotencyKey's purpose (deterministic retry key) and seatId/seatName requirements for multi-seat writes, but it leaves the 'feedback' object structure undefined and doesn't clarify the roles of accountId, flightId, or creativeId. The description only partially bridges the schema 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 clearly states the verb 'provide' and resource 'performance feedback', and adds 'writes to Studio' to specify the destination. It is unique among siblings (no other 'feedback' tool), but it doesn't elaborate on what performance feedback consists of or what effect it has, so it stops short of full clarity.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives. The description mentions operational constraints like seatId/seatName for multi-seat mutations and idempotency key behavior, but never states scenarios like 'use when you need to submit performance evaluations' or excludes other tools. Usage context is only implied by the tool name.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
flightIdYes
seatNameNo
accountIdNo
approvalIdNo
creativeIdsNo
idempotencyKeyYes

Output Schema

ParametersJSON 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?

The description significantly adds beyond annotations by disclosing 'writes to Studio, publishes externally', synchronous execution, partial failure policy ('completed_items_not_rolled_back'), idempotency key derivation behavior, and seat authorization requirements for mutations. These are critical operational details not conveyed by the annotations 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 description is a single dense paragraph that mixes purpose, execution metadata, response guidelines, idempotency, and seat rules. It is front-loaded with purpose but becomes verbose and scatters related info (response handling vs. tool behavior). Some content (e.g., 'Never display raw JSON') is arguably system-level guidance not specific to 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?

Given the complexity (external publish, 7 params, output schema), the description covers many aspects: mutation modes, partial failure, idempotency, seat rules, and execution. However, it omits when to choose this over similar siblings (e.g., retraffick_flight) and does not clarify the role of accountId/approvalId/creativeIds. The output schema exists, so return value details are not required, but the missing parameter context lowers completeness.

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

Parameters3/5

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

With 0% schema description coverage, the description must compensate. It explains idempotencyKey (derived retry key) and seatId/seatName (must be explicitly supplied for writes), but it does not clarify accountId, approvalId, or creativeIds. The partial coverage raises it above a 2 but leaves significant gaps.

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

Purpose5/5

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

The description clearly states a specific verb+resource: 'push the resulting inactive or approved payload to Yahoo DSP' and includes the complete workflow ('traffick and certify a saved Studio flight, generate or reuse ad-server tags'). This distinguishes it from sibling tools like traffick_flight (which only traffics) or generate_adserver_tag (which only generates tags).

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 context: it is the 'Publish path for approved work only', and it mentions mutation modes (validate_only, preview_only, execute) and task support ('forbidden'). However, it does not explicitly name alternative tools for non-approved workflows or for steps like generating tags, so it falls short of a 5.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
brandYes
rulesNo
formatYes
seatIdNo
contextNo
creativeYes
seatNameNo
objectiveYes

Output Schema

ParametersJSON 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?

The description extensively discloses behavioral traits beyond annotations: it creates billable AI usage, executes synchronously, has specific mutation modes (validate_only, preview_only, execute), and a partial failure policy. It also explains idempotency behavior and response handling, adding significant value beyond the sparse 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 description is front-loaded with the purpose but then becomes lengthy with meta-instructions about classification, execution, response formatting, and idempotency. While the information is valuable, it is not concise and could be better structured or trimmed to focus on core usage.

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 complexity (8 parameters, nested object, output schema), the description covers the tool's purpose, mutation modes, and workflow context. The presence of an output schema relieves the need to explain returns. However, it lacks parameter-level detail that would further complete the picture.

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%, and the description does not explain any parameters such as brand, format, objective, or creative. It entirely fails to compensate for the lack of parameter documentation, leaving the agent without guidance on how to fill the required fields.

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

Purpose4/5

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

The description clearly states the tool performs QA on a creative, producing actionable issues, certification evidence, and next steps. It is specific about the resource (creative) and the action (QA for launch readiness), but does not differentiate from sibling tools like leanriq_qa_creative or validate_flight.

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 context on when to use the tool: 'before preview, revision, or trafficking.' This implies a workflow position but does not explicitly mention alternatives or exclusions. The context is present but not compared against other tools.

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.A
Idempotent
Inspect

Refresh and save a standalone Studio advertiser brand profile.. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
brandUrlYes
seatNameNo
accountIdYes
brandNameYes
advertiserIdYes
forceRefreshNo
idempotencyKeyYes
requestedSectionsNo

Output Schema

ParametersJSON 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?

The description goes well beyond the annotations by disclosing that this writes to Studio, creates billable AI usage, executes synchronously, supports validate_only/preview_only/execute modes, has a completed_items_not_rolled_back partial failure policy, returns internal application state, derives deterministic retry keys, and requires seatId/seatName on writes when multiple seats are authorized. These are substantive behavioral disclosures that annotations alone 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.

Conciseness4/5

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

The description is dense but mostly purposeful, front-loading the core purpose and then adding concise operational facts. It reads as a list of telegraphed policy statements, and while every sentence carries useful information, the paragraph format makes it slightly harder to parse. Minor redundancy around 'mutation' and 'seat' exists, but overall it is appropriately sized for the information conveyed.

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

Completeness4/5

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

The tool is complex with 9 parameters, an output schema, and multiple behavioral policies, and the description covers most essential operational context: sync execution, billable usage, mutation modes, failure policy, idempotency, seat selection, and response handling. The main gaps are the lack of explicit sibling differentiation and the unexplained requestedSections and forceRefresh parameters, but the output schema and parameter names reduce the impact of those omissions.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the burden of explaining parameters. It meaningfully clarifies idempotencyKey semantics and the exact seatId/seatName requirement for mutations, but it leaves requestedSections and forceRefresh unexplained. Some parameters are self-explanatory from their names, but the description only partially compensates for the complete lack of schema parameter descriptions.

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 action ('Refresh and save') on a specific resource ('a standalone Studio advertiser brand profile'), making the tool's function clear. The write classification and 'standalone' qualifier help distinguish it from read-only siblings like get_brand_profile and from refresh_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?

The description provides operational constraints such as mutation modes, task support being forbidden, and seat requirements, but it never explains when to choose this tool over alternatives like get_brand_profile or refresh_brand_visuals. There is no explicit when-to-use or when-not-to-use guidance relative to sibling tools.

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 visualsB
Idempotent
Inspect

refresh brand visuals. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
optionsNo
storageNo
seatNameNo
accountIdYes
brandNameYes
websiteUrlYes
advertiserIdYes
idempotencyKeyYes

Output Schema

ParametersJSON 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?

Rich disclosure well beyond the annotations: it states writes to Studio, billable AI usage, synchronous execution, forbidden task support, the three mutation modes, and a partial-failure policy (completed_items_not_rolled_back). It also documents deterministic idempotency-key derivation and the requirement to pass seatId/seatName on a write when more than one seat is authorised. This is exactly the extra 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.

Conciseness4/5

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

The description uses labelled fields (Classification, Execution, Task support, Mutation modes, Partial failure policy) that are front-loaded and scannable. It is somewhat long, with a boilerplate block about response formatting and assistantSummary, but every section is labeled and purposeful rather than rambling.

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 explained, and the behavioral sections are thorough. However, for a complex tool with nested objects the description still omits the most fundamental question - what 'refresh' retrieves or changes about brand visuals - so an agent knows the mechanics and safety profile but not the effect.

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%, so the description must carry parameter meaning, yet it only explains idempotencyKey and the seatId/seatName rule. The five business arguments (advertiserId, brandName, websiteUrl, accountId) and the large nested options/storage objects receive no explanation, leaving most parameters undocumented in both places.

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 name ('refresh brand visuals') and only adds 'writes to Studio, creates billable AI usage,' which classifies the operation but never explains what a refresh actually does (re-scrape the website for logos, fonts, colours, images?). It does not distinguish itself from siblings like get_brand_visuals or refresh_brand_profile. An agent can infer a mutation, but the core resource/action relationship is left vague.

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 alternatives such as get_brand_visuals (the read counterpart) or refresh_brand_profile. The mutation modes (validate_only, preview_only, execute) hint at execution style but not at selection criteria or prerequisites. Usage must be inferred entirely from context.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
seatIdNo
creativeNo
seatNameNo
accountIdYes
versionIdYes
approvalIdNo
creativeIdYes
changeSummaryNo
idempotencyKeyYes
expectedVersionNo

Output Schema

ParametersJSON 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?

The description goes beyond annotations by disclosing execution mode (synchronous), mutation modes (validate_only, preview_only, execute), partial failure policy (completed_items_not_rolled_back), and idempotency fallback behavior when idempotencyKey is omitted. It also clarifies seat authorization requirements for mutations, which is valuable context not present in the annotations (idempotentHint=true, readOnlyHint=false). This adds meaningful transparency about how the tool behaves, though some statements are generic boilerplate.

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 single dense paragraph containing extensive generic response-formatting rules (e.g., 'Use assistantSummary first', 'Never display raw JSON') that are likely shared across all tools. These non-tool-specific instructions inflate the length and distract from the actual purpose. It is not front-loaded with the most essential information; the business behavior is barely addressed while meta-policy dominates.

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 an 11-parameter mutation tool with nested objects and a business context, the description is largely incomplete. It does not explain what restore_creative_version does, what versionId refers to, how dryRun or expectedVersion affect execution, or what the output means. The output schema exists, so return values are covered, but the human-facing purpose and parameter semantics are 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?

With 0% schema description coverage, the description must compensate for undefined parameters, but it only clarifies idempotencyKey (retry key derivation) and seatId/seatName (required for multi-seat mutations). It doesn't explain accountId, creativeId, versionId, approvalId, changeSummary, expectedVersion, dryRun, or the creative object, which are central to actually invoking the restore operation. Core parameter meanings remain ambiguous.

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 'restore creative version' which identifies a specific verb and resource, but it does not explain what 'restore' means in this business context (e.g., undoing changes, recovering an archived version). It lacks differentiation from sibling tools like clone_creative or revise_creative, so an agent cannot fully understand the scope of the operation.

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 provides no explicit guidance on when to use this tool versus alternatives. It mentions 'Task support: forbidden' and 'Mutation modes' but these are operational constraints, not usage scenarios. There is no indication of prerequisites, conditions, or typical use cases that would help an agent decide between restore_creative_version and other creative-related mutations.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
dryRunNo
seatIdNo
flightIdYes
seatNameNo
accountIdYes
approvalIdNo
creativeIdYes
idempotencyKeyNo

Output Schema

ParametersJSON 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?

The description does add behavioral details beyond annotations: it states the operation publishes externally, is durable, supports validate_only/preview_only/execute modes, and can leave completed items unrolled back on partial failure. It also explains idempotency-key derivation and the seat requirement for mutations, which is useful. However, it omits the concrete effect on the creative object, so transparency is partial.

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 dense paragraph that mixes tool classification, response-formatting rules, and seat restrictions without clear structure. The opening sentence is redundant with the title. It could be split into bullets or reorganized, and the response-style instructions are arguably out of scope for an MCP tool description.

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 mutation with nine parameters and an output schema, the description leaves many gaps open: the exact business action, the conditions under which it should be used, the meaning of most parameters, and what the output contains. Even though the output schema exists, the purpose and selection criteria are absent. The tool cannot be used confidently from this description 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 0% schema coverage, the description must compensate, but it only explains idempotencyKey and seatId/seatName. The required parameters (accountId, flightId, creativeId) and force/dryRun/approvalId remain undefined. This leaves the agent guessing about the meaning of core inputs.

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 starts with the tautological 'retraffick creative' and only adds the ambiguous phrase 'publishes externally.' It never defines what it means to retraffick a creative, nor does it differentiate from siblings like traffick_creative. The purpose remains unclear 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?

There is no guidance on when to use this tool versus alternatives. The text covers execution modes and seat requirements but never states the scenario that calls for retrafficking. This leaves the agent without a decision rule.

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

retraffick_flightretraffick flightC
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
dryRunNo
seatIdNo
flightIdYes
seatNameNo
accountIdYes
approvalIdNo
creativeIdNo
idempotencyKeyNo

Output Schema

ParametersJSON 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?

The description adds valuable behavioral context beyond annotations: it publishes externally, executes durably, supports validate_only/preview_only/execute modes, has a partial failure policy, derives idempotency keys, and requires explicit seat selection on writes. This aligns with annotations (idempotentHint=true) and enriches the agent's understanding of side effects and execution semantics.

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 unnecessarily verbose and contains generic response-handling instructions ('Use assistantSummary first', 'Never display raw JSON') that are unrelated to this tool's purpose. This extraneous content dilutes the tool-specific information and violates conciseness principles.

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?

Despite having an output schema and annotations, the description fails to explain the core domain action (retrafficking a flight) or the meaning of most parameters. It focuses on operational metadata (durability, partial failures) and generic response formatting, leaving a critical gap in understanding what the tool actually does and when it should be invoked.

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%, so the description must compensate for undocumented parameters. It does explain idempotencyKey and seatId/seatName behavior, but accountId, flightId, force, dryRun, approvalId, and creativeId are left undefined. The mutation modes mentioned in the description only loosely map to dryRun/force, leaving most parameters semantically 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?

The description opens with 'retraffick flight.' which merely restates the tool name/title without explaining what retrafficking a flight entails. It does not distinguish this tool from siblings like traffick_flight or update_flight, providing no explicit verb+resource definition.

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 is given for when to use retraffick_flight versus alternative tools. The description mentions mutation modes and seat requirements, but these are operational constraints rather than decision criteria for tool selection.

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

retry_taskretry taskC
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
seatIdNo
taskIdYes
seatNameNo
accountIdNo
idempotencyKeyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2/5.0
Behavior1/5

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

The description explicitly labels the tool as 'read-only' while annotations declare readOnlyHint=false, and the text itself lists mutation modes, creating a direct contradiction. Because the description contradicts the structured annotations, it fails to provide reliable behavioral transparency.

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 verbose with several sentences dedicated to generic response formatting ('Use assistantSummary first', 'Never display raw JSON') that are unrelated to the tool's operation. The core action is stated in two words, and the behavioral metadata is buried in a list.

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 description omits essential operational details such as what a retry does, whether it applies to failed tasks only, and what output to expect beyond saying the JSON is internal state. It does include some meta-information (durable execution, failure policy), but the overall context is incomplete and confusingly inconsistent.

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 the description explains only idempotencyKey (deterministic retry key) and seatId/seatName constraints for mutations. Other parameters like taskId, reason, and accountId receive no semantic explanation, though the need to identify a task is implied.

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 'retry task', which merely restates the tool name and provides no concrete definition of what retrying entails or what types of tasks it applies to. It does not distinguish retry_task from sibling tools like cancel_task or get_task, and instead shifts into unrelated response-formatting instructions.

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 is given on when to use retry_task versus alternatives; there is no mention of task lifecycle or conditions under which a retry is appropriate. The prose discusses general response style and seat requirements, but never establishes usage context.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
promptNo
seatIdNo
seatNameNo
accountIdNo
approvalIdNo
creativeIdYes
persistenceNo
instructionsNo
saveToStudioNo
idempotencyKeyYes
expectedVersionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.8/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing default persistence ('saves to Studio by default'), cost ('billable AI usage'), execution durability, mutation modes, partial failure policy, idempotency key derivation, and seat requirements for writes. It adds substantial behavioral context that annotations alone do not provide, and it is consistent with idempotentHint and destructiveHint.

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 long and includes boilerplate about response formatting and internal JSON handling that could be shortened. It also largely repeats the title verbatim in the opening, adding redundancy. While it is front-loaded with purpose, the overall length and repetitive operational guidance hurt clarity.

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 is complex (12 parameters, 0% schema coverage) but the output schema exists and many behavioral aspects are covered. Still, important parameter semantics like prompt vs instructions and expectedVersion are missing, leaving the agent to guess how to populate these fields correctly. The description is not complete enough 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?

With 0% schema description coverage, the description must compensate. It clarifies dryRun, idempotencyKey, and seatId/seatName behavior, but leaves the distinction between prompt and instructions unexplained, and does not address expectedVersion, approvalId, persistence, or saveToStudio. Some parameter meanings remain ambiguous, so the compensation is only partial.

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

Purpose4/5

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

The description clearly states a specific action (revise an existing saved Studio creative) and resource (creative), and enumerates editable elements (copy, imagery, layout, colors, typography, CTA, branding). It distinguishes itself from simply providing instructions to the user, but does not explicitly contrast with sibling tools like clone_creative or restore_creative_version.

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 conditions for use ('when the user supplies a creativeId and asks to change...') and an explicit exclusion for dryRun ('set dryRun only when the user explicitly asks for an unsaved preview'). However, it does not name alternative tools (e.g., clone_creative, restore_creative_version) or state when to prefer them instead.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
limitNo
domainNo
marketNo
regionNo
seatIdNo
marketsNo
websiteNo
seatNameNo
brandNameNo
advertiserIdNo
competitorIdNo
evidenceModeNoDISPLAY
forceRefreshNo
lookbackDaysNo
strategyModeNoBOTH
evidenceLimitNo
strategyModesNo
targetMarketsNo
competitorNameNo
competitorDomainNo
competitorWebsiteNo
recommendationModeNoFULL
competitorKeyMessagesNo
competitorPositioningNo
advertiserGuidanceSnapshotNo

Output Schema

ParametersJSON 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?

The description discloses behavior well beyond the annotations: it creates billable AI usage, executes synchronously, forbids task support, lists mutation modes (validate_only/preview_only/execute), and states a partial-failure policy of completed_items_not_rolled_back. It also explains idempotency-key derivation for accidental replays. These are exactly the operational facts an agent cannot get from readOnlyHint/destructiveHint/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 is correctly front-loaded, but the text then becomes a boilerplate dump (classification, execution, task support, mutation modes, partial-failure policy) plus a long paragraph of output-formatting instructions. It also contains a doubled-period typo ('available..'), and much of the boilerplate is generic rather than tool-specific.

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 described, and the description still covers billable/synchronous behavior, reuse semantics, partial-failure handling, and how to present results (assistantSummary first). What is missing is any coverage of the large, undocumented parameter surface.

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 and 0% schema description coverage, the description only illuminates a few of them: forceRefresh (existing result reused when omitted), evidenceMode default DISPLAY, and lookbackDays at 90 days. The remaining identity/scoping parameters (name, domain, market, region, seatId, advertiserId, competitorId, etc.) get no explanation, so the description 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 first sentence states a specific verb and resource: 'Run canonical LeanrIQ Competitor Intelligence V2 for one advertiser-scoped competitor.' The scope ('one advertiser-scoped competitor') is precise. However, it never distinguishes itself from close siblings such as get_competitor_intelligence, list_competitors, or list_competitor_evidence, so the agent must infer 'run = generate' vs 'get = retrieve'.

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 useful operating context (defaults match Studio, and an existing canonical result is reused without forceRefresh), which implies when a re-run is or isn't needed. But it never states when to prefer this over the read-only competitor siblings or when-not to use it, so routing 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.

run_creative_chainrun creative chainC
Idempotent
Inspect

run creative chain. 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.

ParametersJSON Schema
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
idempotencyKeyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

C2.7/5.0
Behavior5/5

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

The description discloses many behavioral traits beyond the annotations: synchronous execution, partial failure policy (completed_items_not_rolled_back), idempotency key derivation, seat requirements for writes, and the internal nature of the returned JSON. These details align with the annotations (idempotentHint=true, readOnlyHint=false) and significantly enhance the agent's understanding of the tool's runtime 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?

The description uses concise, telegraphic sentences and front-loads the tool name. However, it includes substantial response-formatting instructions (e.g., 'Use assistantSummary first', 'Never display raw JSON') that are only tangentially related to tool selection and invocation, adding length without direct relevance to the tool's core operation.

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?

Despite an abundance of operational metadata, the description omits the core purpose of the tool, the meaning of its 30 parameters, and the differences between validate_only, preview_only, and execute modes. For a complex tool with a rich output schema, this description is insufficient for correct tool usage, even though it covers some edge-case behaviors.

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 30 parameters and zero schema description coverage, the description provides no information about what any parameter means or how to use it. It does not mention KPI, goal, tone, or any other field, leaving the agent without guidance on what values to supply. The description fails to compensate for the schema's lack of parameter 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 description begins with 'run creative chain,' which merely restates the tool name without defining what a creative chain is or what the tool actually accomplishes. The classification and execution details do not clarify the tool's primary function, and it is not distinguished from sibling tools such as build_ad or leanriq_run_creative_chain.

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

Usage Guidelines2/5

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

No explicit guidance is given about when to use this tool versus alternatives. While the mention of mutation modes and 'Task support: forbidden' implies some usage constraints, there is no direction on choosing between mutate modes or when this tool is preferred over related queries or build tools.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
policyNo
seatIdNo
routineNo
seatNameNo
routineIdNo
advertiserIdNo
forceRefreshNo
lookbackHoursNo
advertiserContextNo

Output Schema

ParametersJSON 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?

Beyond the annotations (which only say readOnlyHint=false, destructiveHint=false, idempotentHint=true), the description discloses real behavioral traits: it 'creates billable AI usage', execution is 'durable', evidence 'may be partial', mutation modes include validate_only/preview_only/execute, the partial-failure policy preserves qualified evidence, and it 'never publishes or activates creative'. The idempotency-key derivation and seat-precondition rules add further operational context. Remaining boilerplate about display formatting dilutes but does not negate this.

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 reasonably front-loaded, but the body is bloated: the title sentence is duplicated verbatim (with a stray double period), and a large block is dedicated to UI/response-rendering instructions ('never display raw JSON', 'use assistantSummary first') that belong in a system prompt, not a tool definition. Ratio of signal to boilerplate is poor.

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 mutation/durability/billing/idempotency profile expected of a complex mutating tool. However, it omits how the core inputs (policy, advertiserContext, routine) shape the run and gives no sibling routing, leaving an agent under-informed about how to actually 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?

With 9 parameters, deeply nested objects, and 0% schema description coverage, the description must carry the burden and largely does not. It explains only seatId/seatName semantics and idempotencyKey behavior (a field not even present in the schema), while policy, advertiserContext, routine/routineId, forceRefresh, and lookbackHours are left 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?

The first sentence names a specific verb ('Run') and resource ('World Intelligence') scoped to one advertiser, and adds what it returns ('source-backed external context and creative opportunities'). It does not, however, distinguish itself from near-identical siblings such as get_world_intelligence, leanriq_run_world_intelligence, or run_competitor_intelligence, 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 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 prefer this tool over the many world/competitor intelligence siblings. The only usage-adjacent content is a precondition for writes ('seatId or seatName must be supplied on that exact tool call'), which is a compliance rule 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.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNo
seatIdNo
seatNameNo
accountIdNo
approvalIdNo
campaignIdYes
advertiserIdYes
opportunityIdYes
idempotencyKeyYes
expectedVersionNo

Output Schema

ParametersJSON 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?

Annotation coverage is low, yet the description discloses a great deal beyond it: classification (writes to Studio), execution mode (synchronous), task support (forbidden), mutation modes (validate_only, preview_only, execute), partial failure policy (completed_items_not_rolled_back), idempotency-key derivation, and the multi-seat requirement for writes. These are meaningful operational traits an agent needs and are not present in the annotations or schema.

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 correctly, but the body is dense and partly generic output-formatting boilerplate (assistantSummary guidance, 'never display raw JSON') that does not help tool selection, and it carries a stray double period. Useful content is present but not well-separated from low-value boilerplate.

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 mutation tool with an output schema (so return values need not be described) and 10 parameters, the description covers authorization, seat prerequisites, idempotency behaviour and failure semantics comprehensively. The remaining gap is the unexplained core identifiers, but the operational picture an agent needs to call it safely is largely 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?

Schema description coverage is 0% across 10 parameters, so the description carries the full burden. It only adds meaning for seatId/seatName and idempotencyKey; the required advertiserId, campaignId and opportunityId, plus dryRun, approvalId, accountId and expectedVersion, remain undocumented anywhere. 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.

Purpose5/5

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

States a specific verb (select), a precise resource (one reviewed, source-provenanced World Intelligence opportunity) and a target scope (authorised Studio campaign). It further distances itself from siblings by enumerating what it explicitly does not do (no feed materialisation, no creative/traffic/publish), which makes it distinguishable from list_world_opportunities, get_world_opportunity and the launch/traffick tools.

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 purpose implies usage but no alternative is named and no when/when-not boundary is drawn against siblings like get_world_opportunity or list_world_opportunities. It does add a real precondition (seat must be supplied on the exact call when more than one seat is authorised), which raises it above pure implication but stops short of explicit routing guidance.

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

traffick_creativetraffick creativeB
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
dryRunNo
seatIdNo
flightIdYes
seatNameNo
accountIdYes
approvalIdNo
creativeIdYes
idempotencyKeyNo

Output Schema

ParametersJSON 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?

The description goes far beyond the annotations, disclosing external publication, durable execution, a partial failure policy (completed_items_not_rolled_back), mutation modes, a derived idempotency key mechanism, and the requirement to provide seatId/seatName on mutation when multiple seats are authorized. It also explains the nature of the returned JSON as internal state and provides response-handling directives. These are substantial behavioral disclosures not present in the annotations, and there is no contradiction with the annotation 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 description is moderately sized, front-loaded with the core purpose, and contains valuable operational details. However, it is a dense block of text without visual structuring (bullets or sections), and several sentences about response formatting ('Never display raw JSON', 'Mention IDs only when useful', 'Prefer concise, human language') could be condensed or relocated without loss of meaning. It reads more like a paragraph of instructions than a scannable tool description.

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 is complex (9 params, mutation modes, external side effects) and the description covers important behavioral aspects like durability, failure policy, idempotency, and seat handling, which is good. However, it lacks fundamental semantic context about what 'trafficking' does, what the required parameters refer to (account, flight, creative), and how optional parameters like force, dryRun, and approvalId influence execution. With no output schema summary needed (since an output schema exists), the description still leaves an agent uncertain about preconditions, parameter dependencies, and the exact nature of the operation.

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%, so the description must carry the full burden for parameter explanations. It does clarify the idempotencyKey parameter (deterministic retry if omitted) and the seatId/seatName requirement for mutations, but it leaves accountId, flightId, creativeId, force, dryRun, and approvalId completely unexplained. The mutation modes hint at validate_only, preview_only, and execute behavior but do not map to specific parameters like dryRun. A substantial portion of the input schema remains semantically opaque to an agent.

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 the tool's primary action as 'traffick creative' and clarifies the high-level effect with 'Classification: publishes externally.' This distinguishes it from pure read tools and provides a clear verb+resource pairing. However, it does not fully define what 'trafficking' entails in terms of the creative-flight-adserver relationship, and it does not explicitly differentiate from sibling tools like traffick_flight or 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?

The description provides some operational context (mutation modes, seat requirements, idempotency behavior) but gives no explicit guidance on when to use this tool over alternatives. It does not mention when to prefer traffick_creative versus traffick_flight, retraffick_creative, or other related tools. The only implicit signal is that it is a mutation that publishes externally, but no exclusions or alternative recommendations are offered.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
dryRunNo
seatIdNo
flightIdYes
seatNameNo
accountIdYes
approvalIdNo
creativeIdNo
idempotencyKeyNo

Output Schema

ParametersJSON 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?

The description adds substantial context beyond annotations: durable execution, partial failure policy, mutation modes (validate_only, preview_only, execute), idempotency key derivation, and seat requirements for multi-seat writes. This richly discloses behavior and does not contradict any 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 description is dense and information-rich, but it is a wall of text without clear structure. It includes user-response formatting instructions that are not directly about tool behavior, which adds noise and reduces conciseness.

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 execution semantics, idempotency, and failure policy, but omits a clear business-level explanation of what 'trafficking' a flight entails and what role parameters like force and approvalId play. The output schema exists, so return values are covered, but the overall picture is 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?

With 0% schema description coverage, the description needed to compensate but only explains idempotencyKey, seatId, and seatName. Parameters like force, dryRun, approvalId, and creativeId remain unexplained, leaving significant semantic gaps for a 9-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 'Classification: publishes externally,' which gives a clear sense of the tool's function as an external publish operation. However, it begins with a tautology ('traffick flight') and does not explicitly distinguish this from sibling tools like retraffick_flight or validate_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?

No explicit guidance on when to use this tool versus alternatives. The description mentions mutation modes and seat requirements, but does not explain when to prefer traffick_flight over retraffick_flight, validate_flight, or push_flight_to_yahoo.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
patchYes
dryRunNo
seatIdNo
seatNameNo
accountIdYes
approvalIdNo
advertiserIdYes
idempotencyKeyYes
expectedVersionNo

Output Schema

ParametersJSON 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?

Beyond the annotations, the description discloses several important behaviors: synchronous execution, mutation modes (validate_only, preview_only, execute), partial failure policy (completed_items_not_rolled_back), and deterministic idempotency key derivation. These add meaningful context beyond the readOnly/idempotent 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 description is a run-on collection of operational and formatting instructions, not structured for quick scanning. It combines tool-specific facts with generic response-handling guidelines, burying the core purpose and creating unnecessary length for a simple update operation.

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?

While the description covers operational details (mutation modes, partial failure, seat authorization), it lacks essential context about the update operation itselfโ€”what fields can be changed, any prerequisites, or how it relates to create/archive. The output schema exists, but the description's focus on orchestration rather than tool-specific semantics leaves the tool under-documented.

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%, so the description must compensate for parameter understanding. It adds useful meaning for idempotencyKey (deterministic retry) and seatId/seatName (required for multi-seat mutations), but it does not address the core patch object, accountId, advertiserId, dryRun, approvalId, or expectedVersion, leaving most parameters 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 description opens with 'update advertiser', a clear verb+resource pair, and the tool name makes the purpose apparent. However, it does not explicitly distinguish this from create_advertiser or archive_advertiser, relying on the name rather than any comparative context.

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 provides no guidance on when to use update_advertiser vs alternatives like create_advertiser or archive_advertiser. It includes generic mutation behavior (seat requirements, idempotency) but no tool-specific context such as prerequisites or typical scenarios.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
patchYes
dryRunNo
seatIdNo
seatNameNo
accountIdYes
approvalIdNo
campaignIdYes
idempotencyKeyYes
expectedVersionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

TDQS

A3.8/5.0
Behavior5/5

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

The description goes far beyond annotations by disclosing synchronous execution, partial failure policy, mutation modes, idempotency key derivation, and the mandatory seatId/seatName for writes in multi-seat scenarios. This adds rich behavioral context that readOnlyHint, idempotentHint, and destructiveHint do not convey. No contradictions with annotations.

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

Conciseness3/5

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

The description is long and dense, with a clear front-loaded purpose but includes extensive response-formatting instructions (e.g., 'Use assistantSummary first', 'Never display raw JSON') that are not directly about tool selection or invocation. The repeated canonical field list also duplicates schema information. While each sentence has some value, the description is less concise than ideal.

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

Completeness4/5

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

The description covers critical behavioral aspects like mutation modes, partial failure policy, idempotency, and seat requirements, making it fairly complete for a complex mutation tool. Since an output schema exists, return values need not be described. However, it omits potential prerequisites or error scenarios and leaves patch field semantics partially unexplained. Overall, it is quite comprehensive but not exhaustive.

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

Parameters3/5

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

With schema description coverage at 0%, the description must compensate for undocumented parameters. It partially does by listing canonical patch fields and explaining idempotencyKey behavior and seatId/seatName requirements. However, it does not describe the semantics of most patch fields (e.g., targetAudience, creativeBrief, sizes) or required parameters like accountId and patch beyond their names. The description adds some value but leaves significant gaps.

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

Purpose4/5

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

The description clearly states the tool updates a Studio campaign, using a specific verb and resource. It differentiates from update_flight and update_advertiser by naming 'Studio campaign', but does not explicitly contrast with sibling tools. The canonical field list reinforces the purpose but does not add 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 Guidelines3/5

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

The description implies usage for modifying existing campaigns ('Update a Studio campaign') but does not explicitly state when to use it versus create_campaign or archive_campaign. It provides guidance on which fields to patch but lacks explicit when-to-use or when-not-to-use instructions relative to alternatives.

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

update_flightupdate flightB
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
dryRunNo
seatIdNo
flightIdYes
platformNo
seatNameNo
accountIdNo
approvalIdNo
campaignIdNo
advertiserIdNo
idempotencyKeyNo
thirdPartyTagsNo
creativeConfigsNo
expectedVersionNo

Output Schema

ParametersJSON 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 (readOnlyHint=false, destructiveHint=false, idempotentHint=true), but the description adds genuinely useful behavior: durable execution, a partial-failure policy of 'completed_items_not_rolled_back', deterministic idempotency-key derivation on omitted keys, and the hard requirement that seatId/seatName be supplied on the exact write call. It omits concurrency behavior around expectedVersion, which is a notable gap 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?

Front-loads mutation classification and execution semantics, which is good, but the first sentence is pure tautology and the block of assistantSummary/raw-JSON display rules reads as reusable boilerplate rather than tool-specific guidance. It is not bloated to the point of harm, but several sentences would apply equally to any tool in this server.

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 description does cover the write-guardrails an agent must respect before calling. Given 14 parameters, nested creative config arrays, and 0% schema coverage, however, the parameter side is substantially under-specified 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 14 parameters, and the description only explains two of them (idempotencyKey derivation and seatId/seatName). Nothing is said about flightId, name, expectedVersion, dryRun, or the creatives/thirdPartyTags payloads, so the definition leaves most parameters undocumented in both places.

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 'update flight' essentially restates the tool name, and the description never says what about a flight can be updated or what the scope of the write is. The classification line ('writes to Studio') and mutation modes vaguely imply a mutating flight operation, but nothing distinguishes it from validate_flight, create_flight, or traffick_flight, all of which appear as 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?

Mutation modes (validate_only, preview_only, execute) and the seat-authorisation rule imply when the tool is appropriate, and the seat rule is a concrete precondition. However, there is no explicit direction on when to choose update_flight over validate_flight or delete_flight, and no stated 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
taskIdNo
assetIdNo
flightIdYes
seatNameNo
accountIdNo
previewIdNo
campaignIdNo
creativeIdNo
templateIdNo
advertiserIdNo

Output Schema

ParametersJSON 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, and destructiveHint. The description adds useful context: execution is synchronous, the returned JSON is internal application state, and raw JSON should not be displayed. This goes beyond annotations without contradicting them.

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 front-loaded with the tool name and key classifications, followed by direct response-handling instructions. It is concise and avoids wordiness, though some phrases like 'validate flight' repeat the tool name unnecessarily.

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 description explains the nature of the output and response formatting but fails to clarify the validation operation's purpose, inputs, or when to invoke it. For a tool with 11 parameters and no schema descriptions, this is a significant gap despite the output schema existing.

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 11 parameters and 0% schema description coverage, the description should explain parameter meaning, especially the required flightId. It mentions none of the parameters, leaving the agent to guess what identifiers like seatId, taskId, or creativeId represent.

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 opens with 'validate flight,' which clearly names the action and resource, distinguishing it from siblings like get_flight, create_flight, or delete_flight. However, it never explains what 'validating' a flight entails, so some ambiguity remains about the exact operation.

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 provides no guidance on when to use validate_flight versus alternatives like get_flight or traffick_flight. The 'Task support: forbidden' line is ambiguous and does not clarify selection criteria or prerequisites.

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. 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"
        +}
  2. 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"
        +}
  3. 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
  4. 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"
        +}
  5. 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"
        +}
  6. 1 tool update
    • Addedget_leanriq_capabilities
  7. 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
  8. 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
  9. 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"
        +}
  10. 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"
        +}
  11. 2 tool updates
    • Changedleanriq_get_competitor_creative_intelligence2 fields changed
      • addedInput schema / properties / competitorKeyMessages
        Added value: +{
        +  "items": {
        +    "maxLength": 300,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
      • addedInput schema / properties / competitorPositioning
        Added value: +{
        +  "maxLength": 1200,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedrun_competitor_intelligence2 fields changed
      • addedInput schema / properties / competitorKeyMessages
        Added value: +{
        +  "items": {
        +    "maxLength": 300,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
      • addedInput schema / properties / competitorPositioning
        Added value: +{
        +  "maxLength": 1200,
        +  "minLength": 1,
        +  "type": "string"
        +}
  12. 2 tool updates
    • Changedleanriq_get_competitor_creative_intelligence2 fields changed
      • changedInput schema / properties / evidenceLimit / maximum
        Previous value: -24New value: +48
      • changedInput schema / properties / limit / maximum
        Previous value: -24New value: +48
    • Changedrun_competitor_intelligence2 fields changed
      • changedInput schema / properties / evidenceLimit / maximum
        Previous value: -24New value: +48
      • changedInput schema / properties / limit / maximum
        Previous value: -24New value: +48
  13. 4 tool updates
    • Changedget_competitor_intelligence12 fields changed
      • removedInput schema / properties / adFormat
        Removed value: -{
        -  "default": "DISPLAY_IMAGE",
        -  "enum": [
        -    "DISPLAY_IMAGE",
        -    "IMAGE",
        -    "DISPLAY"
        -  ],
        -  "type": "string"
        -}
      • addedInput schema / properties / advertiserId
        Added value: +{
        +  "maxLength": 240,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • removedInput schema / properties / brandName
        Removed value: -{
        -  "maxLength": 120,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • addedInput schema / properties / competitorDomain
        Added value: +{
        +  "maxLength": 300,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / competitorId
        Added value: +{
        +  "maxLength": 240,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / competitorName
        Added value: +{
        +  "maxLength": 180,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / includeEvidence
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • removedInput schema / properties / limit
        Removed value: -{
        -  "default": 120,
        -  "maximum": 120,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / region
        Removed value: -{
        -  "maxLength": 16,
        -  "minLength": 2,
        -  "type": "string"
        -}
      • removedInput schema / properties / vertical
        Removed value: -{
        -  "maxLength": 160,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • changedInput schema / properties / website / maxLength
        Previous value: -255New value: +300
      • removedInput schema / required
        Removed value: -[
        -  "brandName",
        -  "website"
        -]
    • Changedleanriq_get_competitor_creative_intelligence24 fields changed
      • removedInput schema / properties / adFormat
        Removed value: -{
        -  "default": "DISPLAY_IMAGE",
        -  "enum": [
        -    "DISPLAY_IMAGE",
        -    "IMAGE",
        -    "DISPLAY"
        -  ],
        -  "type": "string"
        -}
      • addedInput schema / properties / advertiserGuidanceSnapshot
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / advertiserId
        Added value: +{
        +  "maxLength": 240,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / properties / brandName / maxLength
        Previous value: -120New value: +180
      • addedInput schema / properties / competitorDomain
        Added value: +{
        +  "maxLength": 300,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / competitorId
        Added value: +{
        +  "maxLength": 200,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / competitorName
        Added value: +{
        +  "maxLength": 180,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / competitorWebsite
        Added value: +{
        +  "maxLength": 300,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / domain
        Added value: +{
        +  "maxLength": 300,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / evidenceLimit
        Added value: +{
        +  "maximum": 24,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / evidenceMode
        Added value: +{
        +  "default": "DISPLAY",
        +  "enum": [
        +    "DISPLAY",
        +    "CROSS_CHANNEL",
        +    "BOTH"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / forceRefresh
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • removedInput schema / properties / limit / default
        Removed value: -120
      • changedInput schema / properties / limit / maximum
        Previous value: -120New value: +24
      • addedInput schema / properties / lookbackDays
        Added value: +{
        +  "default": 90,
        +  "maximum": 730,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / market
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  ]
        +}
      • addedInput schema / properties / markets
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  ]
        +}
      • addedInput schema / properties / name
        Added value: +{
        +  "maxLength": 180,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / strategyMode
        Added value: +{
        +  "default": "BOTH",
        +  "enum": [
        +    "REPLICATE",
        +    "DIFFERENTIATE",
        +    "BOTH"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / strategyModes
        Added value: +{
        +  "items": {
        +    "enum": [
        +      "REPLICATE",
        +      "DIFFERENTIATE"
        +    ],
        +    "type": "string"
        +  },
        +  "maxItems": 2,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetMarkets
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  ]
        +}
      • removedInput schema / properties / vertical
        Removed value: -{
        -  "maxLength": 160,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • changedInput schema / properties / website / maxLength
        Previous value: -255New value: +300
      • removedInput schema / required
        Removed value: -[
        -  "brandName",
        -  "website"
        -]
    • Addedlist_competitor_evidence
    • Addedrun_competitor_intelligence
  14. 85 tool updates
    • First observedarchive_advertiser
    • First observedarchive_campaign
    • First observedarchive_creative
    • First observedbuild_ad
    • First observedbuild_campaign_creative_set
    • First observedcancel_task
    • First observedclone_creative
    • First observedcreate_advertiser
    • First observedcreate_campaign
    • First observedcreate_creative_brief
    • First observedcreate_creative_version
    • First observedcreate_flight
    • First observedcreate_production_plan
    • First observeddelete_flight
    • First observedexport_trafficked_assets
    • First observedgenerate_adserver_tag
    • First observedgenerate_preview_links
    • First observedget_adserver_tag
    • First observedget_advertiser
    • First observedget_asset
    • First observedget_brand_profile
    • First observedget_brand_visuals
    • First observedget_campaign
    • First observedget_capabilities
    • First observedget_competitor_intelligence
    • First observedget_creative
    • First observedget_current_seat
    • First observedget_current_user
    • First observedget_flight
    • First observedget_media_buy_delivery
    • First observedget_permissions
    • First observedget_preview_link
    • First observedget_task
    • First observedget_template
    • First observedget_trafficked_assets
    • First observedget_vertical_intelligence
    • First observedlaunch_creative_campaign
    • First observedleanr_build_campaign_creative_set
    • First observedleanriq_build_ad
    • First observedleanriq_build_agent_ad
    • First observedleanriq_campaign_builder
    • First observedleanriq_create_brief
    • First observedleanriq_create_creative_brief
    • First observedleanriq_create_production_plan
    • First observedleanriq_create_strategy
    • First observedleanriq_current_seat
    • First observedleanriq_get_brand_profile
    • First observedleanriq_get_brand_visuals
    • First observedleanriq_get_competitor_creative_intelligence
    • First observedleanriq_get_vertical_intelligence
    • First observedleanriq_launch_creative_campaign
    • First observedleanriq_qa_creative
    • First observedleanriq_recommend_workflow
    • First observedleanriq_resolve_or_provision_advertiser
    • First observedleanriq_run_creative_chain
    • First observedleanriq_select_seat
    • First observedlist_accessible_seats
    • First observedlist_advertisers
    • First observedlist_assets
    • First observedlist_campaigns
    • First observedlist_competitors
    • First observedlist_creative_versions
    • First observedlist_creatives
    • First observedlist_flights
    • First observedlist_tasks
    • First observedlist_templates
    • First observedpreview_trafficking_output
    • First observedpromote_creative_workspace
    • First observedprovide_performance_feedback
    • First observedpush_flight_to_yahoo
    • First observedqa_creative
    • First observedrefresh_brand_profile
    • First observedrefresh_brand_visuals
    • First observedrestore_creative_version
    • First observedretraffick_creative
    • First observedretraffick_flight
    • First observedretry_task
    • First observedrevise_creative
    • First observedrun_creative_chain
    • First observedtraffick_creative
    • First observedtraffick_flight
    • First observedupdate_advertiser
    • First observedupdate_campaign
    • First observedupdate_flight
    • First observedvalidate_flight

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.
    3
    MIT
  • F
    license
    Not graded
    quality
    D
    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
    -
  • F
    license
    B
    quality
    C
    maintenance
    A platform-agnostic MCP server that connects Claude to campaign data, institutional knowledge, and historical performance for paid media teams, enabling automated analysis, reporting, and debugging.
    73
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources