Skip to main content
Glama

LeanrIQ

Server Details

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

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsC

Average 3.2/5 across 85 of 85 tools scored. Lowest: 1.8/5.

Server CoherenceC
Disambiguation2/5

Many tools are deprecated aliases of the same underlying action (e.g., build_ad, leanriq_build_ad, leanriq_build_agent_ad), and several high-level workflow tools (launch_creative_campaign, run_creative_chain, leanriq_campaign_builder) overlap in purpose. An agent could easily select the wrong variant or mistake a workflow orchestration tool for a specific CRUD operation.

Naming Consistency3/5

The main set follows a consistent verb_noun snake_case pattern (get_campaign, list_creatives, update_flight), but the deprecated leanriq_ prefixed aliases and a few noun-style tools like leanriq_campaign_builder break the uniformity. The naming is readable but not cleanly consistent across the full surface.

Tool Count1/5

85 tools is an extreme count for a single MCP server, far beyond the typical 3-15 well-scoped set. Many are redundant aliases (at least 20 duplicate the core tools), which bloats the tool list without adding functional value and increases selection cost for agents.

Completeness3/5

The core domain—campaign/creative/flight lifecycle, QA, trafficking, and brand intelligence—is well covered with create/read/update/archive operations. However, some referenced capabilities (create_creative_strategy, resolve_or_provision_advertiser) exist only as deprecated alias names and have no canonical non-deprecated tool, leaving noticeable gaps in the surface.

Available Tools

85 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
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
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
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
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
endDateNo
sandboxNo
audienceYes
operatorNo
seatNameNo
accountIdNo
objectiveYes
startDateNo
campaignIdNo
funnelStageYes
targetSizesNo
advertiserIdNo
campaignNameYes
generateTagsNo
saveToStudioNo
idempotencyKeyNo
desiredVariantCountNo
strictBrandComplianceNo
createAdvertiserIfMissingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes
Behavior5/5

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

The annotations already mark this as a non-read-only, idempotent mutation, but the description adds billable AI usage, synchronous execution, forbidden task support, mutation modes, partial failure policy, and deterministic idempotency-key derivation. These details go well beyond the annotations and are directly useful for invocation.

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

Conciseness3/5

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

The purpose and usage are front-loaded, but the description then appends a long block of generic assistant-response instructions ('Use assistantSummary first', 'Never display raw JSON') that are not tool-specific. These sentences add noise and make it longer than necessary, though the core sections remain clear.

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 25-parameter mutation with nested objects, the description covers timing, failure policy, billing, and idempotency, which is valuable. However, it omits any guidance on required parameters and domain concepts, so an agent must guess from parameter names alone. The output schema exists, but completeness is still limited by the missing parameter semantics.

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

Parameters2/5

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

The input schema has 25 parameters and 0% schema description coverage, so the description must carry parameter semantics. It only meaningfully explains idempotencyKey behavior ('deterministic retry key... cannot create duplicate work'), leaving required fields like objective, audience, KPI, and funnelStage unexplained. This is insufficient compensation for the low schema coverage.

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 ('Plan and create') and resource ('initial Studio creative set'), explicitly scoping to campaigns with no saved creatives. It also distinguishes from the sibling build_ad by naming it as the tool for rebuilding.

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 gives an explicit exclusion: 'Do not use this tool to rebuild existing creatives' and points to build_ad with campaignId/campaignName. The 'initial ... no saved creatives' phrase states the intended condition, making selection straightforward.

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
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
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
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
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
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
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 flightB
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
creativeConfigsNo
expectedVersionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes
Behavior5/5

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

The description goes beyond the annotations by disclosing durable execution, validate_only/preview_only/execute mutation modes, completed_items_not_rolled_back partial failure policy, internal-state return JSON, idempotency key derivation, and the multi-seat seatId/seatName requirement. It is consistent with the readOnly=false, idempotent=true, destructive=false annotations and adds no contradictions.

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 long and front-loaded with the action and classification. However, it includes generic agent response guidelines (assistantSummary, raw JSON, language style) that are not tool-specific and could be omitted, 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 13-parameter mutation with mutation modes and partial failure semantics, the description lacks essential details: what each mode does, how dryRun relates to the modes, what constitutes a complete flight, and what fields are needed for a successful execute. The output schema is present, but the input semantics are underspecified.

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 13 parameters and 0% schema description coverage, the description only explains idempotencyKey and the seatId/seatName requirement. It does not describe the meaning or relationships of name, platform, flightId, accountId, campaignId, advertiserId, creativeConfigs, dryRun, expectedVersion, etc., leaving major gaps for an agent to correctly construct a create_flight request.

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 action 'create flight' with a specific verb and resource, and adds 'writes to Studio' to clarify the system context. It does not explicitly differentiate from siblings like update_flight or validate_flight, but the create verb is unambiguous.

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

Usage Guidelines3/5

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

The description provides context about mutation modes, execution durability, and partial failure policy, but it does not explicitly state when to use create_flight over alternatives. It includes a prerequisite that seatId/seatName must be supplied on the exact call for multi-seat writes, which is useful, but lacks exclusions 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.

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

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes
Behavior5/5

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

Beyond readOnlyHint and idempotentHint, it discloses synchronous execution, forbidden task support, internal JSON usage, formatting rules (assistantSummary first, no raw JSON), and next-action suggestion. This is valuable contextual 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 somewhat lengthy but front-loaded with the core purpose. The instructions are structured and useful, though slightly repetitive (same sentence in title and description) and includes a minor typo (double period).

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. The description adds execution and formatting context, but missing parameter explanations and sibling differentiation leave gaps for correct invocation.

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

Parameters1/5

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

Schema has 0% description coverage, and the description is silent on parameter semantics. brandName and brandUrl are required but not explained; forceRefresh and seatId are not mentioned at all. The description fails to compensate for the schema gap.

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

Purpose4/5

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

The description clearly states the tool researches and returns a LeanrIQ brand profile, with a read-only, non-persistent scope. However, it does not differentiate from the similar leanriq_get_brand_profile sibling.

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

Usage Guidelines3/5

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

It implies use when you need brand profile research, but never explicitly contrasts with refresh_brand_profile or leanriq_get_brand_profile. It gives output-formatting guidance but not 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.B
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
seatIdNo
optionsNo
storageNo
seatNameNo
brandNameYes
websiteUrlYes
advertiserIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes
Behavior4/5

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

Beyond annotations (readOnly, idempotent), the description adds 'Execution: synchronous', 'Task support: forbidden', and states the returned JSON is internal application state for orchestration. It also provides response handling guidance (use assistantSummary, avoid raw JSON). This adds useful behavioral context beyond what annotations declare.

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 clear, but the description then becomes a run-on list of operational instructions (classification, execution, task support, response formatting) that repeats annotation info. Several sentences about never displaying raw JSON and using assistantSummary are about user interaction, not the tool's behavior, making it overlong.

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?

Provides strong workflow context (when to use, read-only nature) but completely omits parameter details—especially options that control what assets are collected. With 7 parameters at 0% schema coverage and nested objects, the description is insufficient for an agent to know what values to pass. No mention of expected return structure despite an 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?

The input schema has 0% description coverage and the description does not explain any of the 7 parameters, including required fields like advertiserId, brandName, websiteUrl. The collection goals are listed, but there is no mapping to options like maxLogos, fetchFonts, etc. 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.

Purpose5/5

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

Clearly states the tool collects brand visual assets (logos, imagery, colours, fonts, previews) for Studio creative builds. The phrase 'Use this before build_ad' differentiates it from other getters in the workflow. Specific verb 'Collect' with a defined set of resources.

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 directs use 'before build_ad when a campaign needs visual grounding' and notes it does not save to Studio, setting expectation of read-only usage. However, it does not name alternative tools like get_brand_profile or refresh_brand_visuals, so it scores below the highest tier.

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
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
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_intelligenceget competitor intelligenceC
Idempotent
Inspect

get 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
limitNo
regionNo
seatIdNo
websiteYes
adFormatNoDISPLAY_IMAGE
seatNameNo
verticalNo
brandNameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes
Behavior4/5

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

The description discloses useful behavioral traits beyond annotations: it creates billable AI usage, executes synchronously, supports mutation modes (validate_only, preview_only, execute), has a partial failure policy, and returns internal application state. It also notes idempotency behavior. These details add value beyond the annotations, though some 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 overly long but contains mostly generic operational text (classification, execution, task support, mutation modes) that likely applies to many tools. It is not front-loaded with tool-specific purpose; instead it begins with a repetition of the name followed by boilerplate. Each sentence does not earn its place relative to the tool's actual function.

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 is incomplete for a tool with this complexity. It fails to explain the core function (what competitor intelligence is), the meaning of key parameters, or how to interpret results. The output schema may cover return values, but the description still lacks domain context and selection guidance, leaving the agent uncertain about when and how to use the tool.

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

Parameters1/5

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

The input schema has 8 parameters (brandName, website, limit, region, seatId, adFormat, seatName, vertical) with 0% description coverage. The description provides no explanation of what any parameter means, how they relate, or example values. It only mentions idempotencyKey, which is not even in the schema. This is a critical gap for correct invocation.

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 'get competitor intelligence', which merely restates the tool name/title without adding specificity. It does not explain what type of competitor intelligence is returned or how this differs from sibling tools like get_vertical_intelligence or leanriq_get_competitor_creative_intelligence.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. The only usage-related instruction is about how to format responses, which applies after invocation, not for tool selection. It fails to mention prerequisites, use cases, or exclusion conditions.

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

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.C
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
toneNo
brandNo
forceNo
offerNo
budgetNo
seatIdNo
channelNo
endDateNo
productNo
audienceNo
elementsNo
flightIdNo
platformNo
seatNameNo
verticalNo
accountIdNo
mustAvoidNo
objectiveYes
startDateNo
approvalIdNo
campaignIdNo
flightNameNo
constraintsNo
destinationNo
funnelStageNo
mustIncludeNo
persistenceNo
targetSizesNo
workspaceIdNo
advertiserIdNo
campaignNameNo
deliverablesNo
saveToStudioNo
executionModeNopreview
idempotencyKeyNo
landingPageUrlNo
revisionRequestNo
workspaceSourceNo
performanceEvidenceNo
workspaceAccessTokenNo
createCampaignIfMissingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes
Behavior5/5

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

The description goes far beyond annotations by disclosing side effects: 'writes to Studio, creates billable AI usage, publishes externally', synchronous execution, partial failure policy, and detailed idempotency key behavior. It also clarifies seat requirements for mutations, providing rich behavioral context.

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

Conciseness1/5

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

The description is a long, unstructured block of text that mixes runtime policies with response-style guidelines ('Use assistantSummary first...'). It is not front-loaded with a clear tool summary and includes extraneous instructions better suited to a system prompt.

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 (42 parameters, output schema), the description omits the core purpose and parameter orchestration. It covers operational quirks like idempotency and partial failure, but leaves major gaps about what the tool does and how 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?

Only `idempotencyKey` and `seatId`/`seatName` receive some explanatory context, while the schema has 42 parameters with zero embedded descriptions. The description fails to compensate for the low schema coverage for critical parameters like `objective`, `executionMode`, `persistence`, or `workspaceSource`.

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 is a generic runtime overview ('LeanrIQ Creative Runtime...') and never explicitly states that `launch_creative_campaign` launches a creative campaign. It lists modes and policies but does not specify the tool's core action or scope, making it unclear 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?

There is no explicit 'use this tool when...' or comparison to sibling tools. The description mentions mutation modes and 'Task support: forbidden' but does not explain when to choose this tool over alternatives like `build_ad` or `create_campaign`.

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
endDateNo
sandboxNo
audienceYes
operatorNo
seatNameNo
accountIdNo
objectiveYes
startDateNo
campaignIdNo
funnelStageYes
targetSizesNo
advertiserIdNo
campaignNameYes
generateTagsNo
saveToStudioNo
idempotencyKeyNo
desiredVariantCountNo
strictBrandComplianceNo
createAdvertiserIfMissingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes
Behavior5/5

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

Beyond the annotations (readOnlyHint false, idempotentHint true), the description discloses 'creates billable AI usage,' 'Execution: synchronous,' 'Task support: forbidden,' mutation modes (validate_only, preview_only, execute), 'Partial failure policy: completed_items_not_rolled_back,' and the idempotency key derivation behavior. These are significant behavioral traits not captured 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.

Conciseness2/5

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

The description is verbose and mixes unrelated operational guidance (response handling, user interaction style) with tool semantics. It repeats the title content, contains a typo ('Studio inventory..'), and could be significantly shortened without losing value. It is not front-loaded with the most critical 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?

It provides substantial context on usage, mutation modes, failure policy, and output handling, and the output schema covers return values. However, the complete absence of parameter semantics for 25 parameters is a major gap, especially given the tool's complexity, so the description is not fully complete.

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

Parameters2/5

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

With 25 parameters and 0% schema description coverage, the description carries the burden but mentions no parameter meanings except idempotencyKey in the retry context. Required fields like campaignName, objective, audience, KPI, and funnelStage are left undefined, so the description fails to compensate for the schema's lack of 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 clearly states 'Plan and create an initial Studio creative set for a campaign that has no saved creatives,' specifying the verb, resource, and scope. It also explicitly distinguishes itself from build_ad by saying not to use it for rebuilding existing creatives, which sets it apart from siblings.

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 gives explicit when-to-use context ('campaign that has no saved creatives') and when-not-to-use: 'Do not use this tool to rebuild existing creatives; use build_ad with campaignId or campaignName.' It also marks itself as a 'Deprecated alias for build_campaign_creative_set,' signaling an alternative.

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

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint, etc.), the description discloses that 'The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration,' and instructs to 'Never display raw JSON... unless the user explicitly asks.' This adds significant behavioral context about the tool's internal nature and output handling, which annotations do not cover.

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

Conciseness4/5

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

The description is moderately concise and front-loaded with the core purpose and deprecated status. It includes extra directives like 'Use assistantSummary first' and 'Never display raw JSON,' which are useful but slightly verbose. The multiple short statements ('Classification: read-only. Execution: synchronous. Task support: forbidden.') add value but could be condensed without loss.

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

Completeness5/5

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

Given the presence of an output schema and the rich annotations, the description covers the essential behavioral context: the tool is read-only, does not save, is a deprecated alias, returns internal state, and must be used with assistantSummary. It fully addresses the agent's needs for this tool without relying on undocumented output or side effects.

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 compensate for it. None of the parameters (brandName, brandUrl, seatId, etc.) are explained beyond their names in the schema. The description does not clarify the role or purpose of any parameter, so the AI agent receives no additional semantic guidance beyond the raw property names.

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: 'Research and return a LeanrIQ brand profile.' It distinguishes itself by explicitly noting it is a 'Deprecated alias for get_brand_profile,' which differentiates it from sibling tools like get_brand_profile and refresh_brand_profile. The verb 'research and return' is specific and the resource is named.

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?

Usage guidance is explicit: the description says 'Deprecated alias for get_brand_profile,' implying the preferred alternative. It also clarifies that 'This read capability does not save to Studio' and instructs 'Use assistantSummary first when responding to the user,' providing clear context on when and how to use the tool.

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)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.. 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
Behavior5/5

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

Even though annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, the description adds substantial behavioral context: synchronous execution, internal application state, not saving to Studio, and detailed response-handling instructions (use assistantSummary, never display raw JSON, suggest next action). This goes well beyond the annotations and orients the agent on how to handle results.

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 redundant meta-instructions (e.g., 'Classification: read-only' repeats annotations, 'Execution: synchronous' is not essential). It has a typo ('..') and repeats the title word-for-word at the start. While it front-loads the purpose, it spends several sentences on response formatting guidance that inflate length without adding tool-specific 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 has 7 parameters and a nested options object with 14 sub-properties, but the description provides no guidance on how to configure these settings. It does give high-level context (visual grounding for Studio builds, pre-build_ad usage, read-only nature) and points to output schema existence. However, for a tool of this complexity, the lack of any parameter-related context leaves the agent under-informed about how to tailor the collection behavior.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It does not explicitly explain any of the 7 parameters (advertiserId, brandName, websiteUrl, seatId, seatName, options, storage). It only vaguely hints at the role of brand/website via 'brand logos, imagery, colours, fonts,' but this does not clarify parameter purpose or constraints. The description is largely silent on how to set options or interpret the required fields.

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: 'Collect brand logos, imagery, colours, fonts, and visual previews for use in Studio creative builds.' It also differentiates from siblings by noting it is a deprecated alias for get_brand_visuals and by positioning it as a pre-step to build_ad, making its role 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?

It explicitly states when to use: 'Use this before build_ad when a campaign needs visual grounding.' It also provides a when-not via 'this read capability does not save to Studio,' and names an alternative (get_brand_visuals as the non-deprecated alias). The restriction 'Task support: forbidden' further clarifies agent usage boundaries.

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_intelligenceget competitor intelligence (deprecated alias)C
Idempotent
Inspect

get competitor intelligence. Deprecated alias for get_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
limitNo
regionNo
seatIdNo
websiteYes
adFormatNoDISPLAY_IMAGE
seatNameNo
verticalNo
brandNameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes
Behavior4/5

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

The description discloses significant behavioral traits: 'Classification: creates billable AI usage' indicates cost implications, 'Mutation modes: validate_only, preview_only, execute' and 'Partial failure policy: completed_items_not_rolled_back' explain failure semantics, and the idempotency key derivation note clarifies replay behavior. These go beyond the annotations (readOnlyHint=false, idempotentHint=true) and add context about billing, mutation modes, and failure handling. 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 includes a large block of generic instructions about response style, using assistantSummary, avoiding raw JSON, and next actions. These are not tool-specific and bloat the description. The first sentence is short, but the overall structure is not concise; many sentences could be removed without losing tool-relevant 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?

Despite having an output schema, the description misses the core purpose of the tool: what competitor creative intelligence provides. It also fails to explain any parameter semantics or typical use cases. The behavioral notes (mutation modes, partial failure) are useful but do not complete the contextual picture for an agent deciding to invoke this tool among many sibling getter tools.

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%, meaning the JSON schema provides no descriptions for any of the 8 parameters. The description also does not explain what brandName, website, limit, region, seatId, adFormat, seatName, or vertical mean. There is no effort to compensate for the lack of schema-level documentation, leaving the agent to guess parameter semantics from names and constraints only.

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 tool name ('get competitor intelligence') and notes it is a deprecated alias for get_competitor_intelligence. It does not explain what competitor creative intelligence actually is or what data it returns, and it does not distinguish this from sibling tools like get_vertical_intelligence or get_media_buy_delivery.

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 tells the agent this is a deprecated alias for get_competitor_intelligence, which implies the agent should prefer the non-deprecated tool. However, it provides no guidance on when to use competitor intelligence versus other intelligence tools, nor any exclusions or prerequisites. The rest of the description is generic response instructions that 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.

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
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_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
toneNo
brandNo
forceNo
offerNo
budgetNo
seatIdNo
channelNo
endDateNo
productNo
audienceNo
elementsNo
flightIdNo
platformNo
seatNameNo
verticalNo
accountIdNo
mustAvoidNo
objectiveYes
startDateNo
approvalIdNo
campaignIdNo
flightNameNo
constraintsNo
destinationNo
funnelStageNo
mustIncludeNo
persistenceNo
targetSizesNo
workspaceIdNo
advertiserIdNo
campaignNameNo
deliverablesNo
saveToStudioNo
executionModeNopreview
idempotencyKeyNo
landingPageUrlNo
revisionRequestNo
workspaceSourceNo
performanceEvidenceNo
workspaceAccessTokenNo
createCampaignIfMissingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes
Behavior5/5

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

The description richly discloses behaviors beyond annotations: it states the tool writes to Studio, creates billable AI usage, publishes externally, is synchronous, has a partial failure policy (completed_items_not_rolled_back), derives an idempotency retry key when omitted, and requires seatId/seatName for mutations. No contradiction with annotations (readOnlyHint=false, idempotentHint=true).

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 verbose and mixes tool capability, operational constraints, and response-formatting instructions in a dense block. The first sentence is a run-on with multiple clauses, and while most sentences add value, the lack of clear separation between concerns makes it less scannable 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 key operational context: execution modes, synchronous execution, task unsupported, partial failure policy, idempotency, seat requirements, and response handling. An output schema exists, so return value details are not necessary. However, with 42 parameters and 0% schema coverage, the lack of parameter explanation and the missing explicit pointer to launch_creative_campaign hold it back from full 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?

Schema description coverage is 0%, so the description must compensate for the 42 parameters, but it only explains idempotencyKey, seatId/seatName, and execution modes. Most parameters (objective, brand, audience, KPI, etc.) remain semantically undefined, and many have nested structures that are not explained, leaving a significant gap for agent invocation.

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

Purpose5/5

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

The name 'launch_creative_campaign' combined with the description clearly states it launches creative campaigns, with details about preview, collaborate, operate, and publish modes. It distinguishes itself from siblings by explaining that default preview mode works without Studio while operate creates Studio work, and it identifies itself as a deprecated alias for launch_creative_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 provides explicit guidance on when to use different execution modes (preview, collaborate, operate, publish) and states 'Task support: forbidden' as a limitation. It names the canonical alternative (launch_creative_campaign) by calling itself a deprecated alias, but does not explicitly instruct to prefer that sibling. Seat authorization requirements are also clearly stated for mutations.

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

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

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

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes
Behavior5/5

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

The description significantly exceeds annotation coverage by noting that this 'writes to Studio, creates billable AI usage,' is synchronous, has specified mutation modes, and a partial failure policy. It also explains idempotency key derivation and seat authorization requirements, providing deep behavioral transparency 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 information-dense but rambling, mixing tool-specific behavior (mutation modes, partial failure) with generic response formatting instructions (assistantSummary, no raw JSON). It is not front-loaded; the core purpose appears first, but the latter half contains boilerplate that 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?

While output schema covers return values, the description lacks explanations for several parameters and does not clarify the difference between mutation modes (validate_only, preview_only, execute) or the exact effect of forceRefresh. With 8 parameters, 5 required, and 0% schema coverage, the description leaves significant 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%, so the description must compensate. It explains idempotencyKey behavior and seatId/seatName requirements, but core parameters like brandName, brandUrl, advertiserId, accountId, and forceRefresh are not described. The meaning of forceRefresh is especially unclear without further explanation.

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 'Refresh and save a standalone Studio advertiser brand profile,' clearly stating a specific verb and resource. This distinguishes it from read-only siblings like get_brand_profile and from refresh_brand_visuals, which targets a different resource.

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 some usage context, such as 'Task support: forbidden' and a conditional requirement for seatId/seatName on mutations, but does not explicitly state when to use this tool over alternatives or exclude specific scenarios. There is no direct comparison to sibling tools like get_brand_profile or refresh_brand_visuals.

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 visualsA
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
Behavior5/5

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

The description goes beyond the annotations by disclosing that this writes to Studio, is billable, has partial failure behavior (completed_items_not_rolled_back), and derives deterministic retry keys when idempotencyKey is omitted. It also states the seat requirement for writes and the response-style expectations, giving the agent a thorough understanding 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 block of dense text mixing tool-specific operational details with generic response-style instructions (assistantSummary, raw JSON, IDs). While the information is valuable, it lacks visual structure and repeats orchestration boilerplate that could live elsewhere, making it harder to parse.

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 aspects (synchronous, billable, partial failure, seat requirement, idempotency) and there is an output schema for return values. However, it does not explain what 'refresh brand visuals' actually does functionally—what assets are scraped, how existing visuals are replaced, or what the mutation modes validate_only/preview_only/execute mean—leaving an important functional gap.

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

Parameters2/5

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

The schema has 0% description coverage, and the tool description only mentions idempotencyKey and seatId/seatName. Required parameters like advertiserId, brandName, websiteUrl, and accountId are left entirely to their names. The nested options and storage objects have no explanatory text, so the description fails to compensate for the schema's lack of 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 opens with the verb+resource 'refresh brand visuals' and immediately clarifies it writes to Studio and creates billable AI usage, distinguishing it from read-only get_brand_visuals. However, it never explicitly differentiates from refresh_brand_profile or explains what a refresh entails 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 Guidelines4/5

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

The description states execution is synchronous and task support is forbidden, providing clear when-not guidance. It also gives a concrete prerequisite for mutations (seatId/seatName when multiple seats are authorized). It does not explicitly name alternative tools or scenarios for when this tool is preferred, but the context is clear.

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
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
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
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
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 from plain-language instructions, save the updated creative, and return fresh preview links plus QA/certification context for review.A
Idempotent
Inspect

Revise an existing saved Studio creative from plain-language instructions, save the updated creative, and return fresh preview links plus QA/certification context for review.. 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
Behavior4/5

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

The description adds substantial behavior beyond annotations: creates billable AI usage, durable execution, partial failure policy (completed_items_not_rolled_back), idempotency key derivation, and seat requirements for multi-seat mutations. These complement the readOnlyHint=false and idempotentHint=true annotations without contradiction. Minor gap: no mention of versioning or effect on previous creative versions.

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 front-loads the core purpose but then shifts to a list of system-level instructions that may apply globally across tools (e.g., 'Never display raw JSON', 'Use assistantSummary first'). The structure is a single run-on block with punctuation errors ('review.. Classification'). While each sentence adds some value, the overall message is more verbose than necessary for a tool description.

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, the description covers mutation behavior, failure policy, idempotency, seat handling, and output expectations. It does not need to explain return value structure since an output schema exists. The main missing piece is usage differentiation from sibling tools, but operational context is quite complete.

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

Parameters2/5

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

With 0% schema description coverage, the description needed to compensate, but it only explains idempotencyKey and seatId/seatName requirements. The required creativeId, along with prompt, instructions, persistence, saveToStudio, dryRun, expectedVersion, accountId, and approvalId, receive no semantic explanation. This forces the agent to rely on parameter names and types, which is insufficient for nuanced options like the 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 specific verb-object: 'Revise an existing saved Studio creative from plain-language instructions, save the updated creative, and return fresh preview links plus QA/certification context.' This clearly states the tool's purpose and result. It also differentiates from siblings like clone_creative or create_creative_version by focusing on revision of existing saved creatives.

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 provide explicit guidance on when to use this tool versus alternatives such as clone_creative, create_creative_version, or retraffick_creative. It describes mutation constraints and seat requirements, but lacks contextual triggers or exclusions. The agent must infer usage scope solely from the name and purpose statement.

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

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
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
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
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
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 flightA
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
creativeConfigsNo
expectedVersionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes
Behavior5/5

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

The description discloses much beyond the annotations: 'Execution: durable', 'Partial failure policy: completed_items_not_rolled_back', idempotency derivation when idempotencyKey is omitted, and the seat requirement. It also explains the return value is internal application state and gives response-formatting instructions. No contradiction with annotations (readOnlyHint=false, idempotentHint=true).

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, single-paragraph block containing valuable information but also generic response-style instructions. It is front-loaded with the core classification but could be more scannable with bullet points or sections. Some sentences (e.g., about assistantSummary and never showing raw JSON) feel like boilerplate rather than tool-specific content.

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

Completeness2/5

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

For a complex mutation with 13 parameters, no schema description coverage, and no explanations of core inputs, the description is incomplete. It covers operational traits like durability and partial failure, but omits domain semantics such as what a flight is, which fields are updatable, and prerequisites (e.g., whether the flight must exist or be in a certain status).

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 compensate for the 13 parameters. It explains idempotencyKey and seatId/seatName requirements, but fails to describe the meaning of core parameters like flightId, creativeConfigs, expectedVersion, dryRun, or accountId. The agent is left without semantic guidance for most fields.

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 'update flight' with 'Classification: writes to Studio', establishing a specific verb and resource. It distinguishes itself from siblings like get_flight (read), validate_flight (validation-only), and delete_flight (destructive) by framing this as the write/update tool.

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

Usage Guidelines4/5

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

The description includes mutation modes (validate_only, preview_only, execute), which guide when to use this tool versus a pure validation tool. It also provides important usage conditions: seatId/seatName must be supplied on the exact call when multiple seats are authorized, and idempotencyKey behavior. However, it does not explicitly name alternatives such as validate_flight or create_flight.

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

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • F
    license
    -
    quality
    C
    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
    B
    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
  • A
    license
    -
    quality
    D
    maintenance
    An MCP server for programmatic management of Meta (Facebook/Instagram) advertising campaigns through AI assistants. It enables campaign creation, ad set management, creative upload, analytics, audience management, and conversion tracking.
    199
    4
    MIT
  • F
    license
    -
    quality
    F
    maintenance
    MCP server for managing Google Ads, Meta Ads, LinkedIn Ads, and TikTok Ads via AI. 210+ tools including account audits, wasted spend detection, and PMax insights.
    2

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources