{"name":"io.github.leanrads/leanriq","slug":"leanrads-leanriq","title":"LeanrIQ","description":"Creative-intelligence MCP for campaign strategy, ad builds, QA, and reporting.","url":"https://mcp.market/server/leanrads-leanriq","rating":null,"grade":"C","score":57,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":20,"ok":20,"last_checked_at":"2026-09-24T08:25:47.107Z","last_ok_at":"2026-09-24T08:25:47.107Z","latency_ms":164},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/leanrads/LeanrIQ","website":"https://github.com/leanrads/leanriq-mcp-docs","version":"1.0.1","remotes":[{"type":"streamable-http","url":"https://iq.leanrads.com/mcp"}],"packages":[],"tools":[{"name":"archive_advertiser","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"resourceId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"expectedVersion":{"anyOf":[{"type":"string"},{"type":"number"}]},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId","advertiserId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"archive_campaign","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"resourceId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"expectedVersion":{"anyOf":[{"type":"string"},{"type":"number"}]},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId","campaignId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"archive_creative","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"resourceId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"expectedVersion":{"anyOf":[{"type":"string"},{"type":"number"}]},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId","creativeId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"build_ad","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1},"accountId":{"type":"string"},"advertiserId":{"type":"string"},"campaignId":{"type":"string"},"creativeId":{"type":"string"},"creativeIds":{"type":"array","items":{"type":"string"}},"templateId":{"type":"string"},"assetId":{"type":"string"},"flightId":{"type":"string"},"taskId":{"type":"string"},"idempotencyKey":{"type":"string"},"persistence":{"type":"string","enum":["preview_only","save_to_studio"]},"advertiser":{},"campaign":{},"creative":{},"template":{},"assets":{},"brief":{},"objective":{"type":"string"},"audience":{},"requestedFormats":{"type":"array","items":{}},"force":{"type":"boolean"},"skipTraffickedRebuild":{"type":"boolean"},"prompt":{"type":"string"},"instructions":{"type":"array","items":{"type":"string"}},"input":{}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"build_campaign_creative_set","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"advertiserId":{"type":"string","minLength":1,"maxLength":160},"accountId":{"type":"string","minLength":1,"maxLength":160},"brand":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"domain":{"type":"string","minLength":1,"maxLength":253},"brandId":{"type":"string","minLength":1,"maxLength":160},"websiteUrl":{"type":"string","minLength":1,"maxLength":2000}},"required":["domain"],"additionalProperties":false},"operator":{"type":"string","minLength":1,"maxLength":253},"billing":{"type":"string","enum":["agent","operator","advertiser"]},"sandbox":{"default":false,"type":"boolean"},"createAdvertiserIfMissing":{"default":false,"type":"boolean"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":160},"campaignName":{"type":"string","minLength":1,"maxLength":160},"objective":{"type":"string","minLength":1,"maxLength":240},"audience":{"type":"string","minLength":1,"maxLength":1200},"KPI":{"type":"string","minLength":1,"maxLength":240},"funnelStage":{"type":"string","minLength":1,"maxLength":120},"budget":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"string","minLength":1,"maxLength":120}]},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"targetSizes":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"desiredVariantCount":{"type":"integer","minimum":1,"maximum":24},"generateTags":{"default":false,"type":"boolean"},"saveToStudio":{"default":true,"type":"boolean"},"strictBrandCompliance":{"default":true,"type":"boolean"},"notes":{"type":"string","maxLength":2000},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["campaignName","objective","audience","KPI","funnelStage"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"cancel_task","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"taskId":{"type":"string","minLength":1,"maxLength":240},"accountId":{"type":"string","minLength":1,"maxLength":240},"reason":{"type":"string","maxLength":1000},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["taskId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"clone_creative","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"expectedVersion":{"anyOf":[{"type":"string"},{"type":"number"}]},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"creativeId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId","idempotencyKey","creativeId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_advertiser","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"expectedVersion":{"anyOf":[{"type":"string"},{"type":"number"}]},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"advertiser":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":240},"domain":{"type":"string","minLength":1,"maxLength":253},"websiteUrl":{"type":"string","minLength":1,"maxLength":2000},"status":{"type":"string","minLength":1,"maxLength":240},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["name"],"additionalProperties":{}},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId","idempotencyKey","advertiser"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_campaign","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"expectedVersion":{"anyOf":[{"type":"string"},{"type":"number"}]},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"campaign":{"type":"object","properties":{"advertiserId":{"type":"string","minLength":1,"maxLength":240},"name":{"type":"string","minLength":1,"maxLength":240},"campaignName":{"type":"string","minLength":1,"maxLength":240},"objective":{"type":"string","minLength":1,"maxLength":2000},"funnelStage":{"type":"string","minLength":1,"maxLength":200},"targetImpressions":{"anyOf":[{"type":"number","minimum":0},{"type":"string","minLength":1,"maxLength":40}]},"primaryKpi":{"type":"string","minLength":1,"maxLength":240},"secondaryKpi":{"type":"string","minLength":1,"maxLength":240},"targetAudience":{"type":"string","minLength":1,"maxLength":2000},"creativeBrief":{"type":"string","minLength":1,"maxLength":8000},"requiredSizes":{"maxItems":24,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"preferredSizes":{"maxItems":24,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"supportedSizes":{"maxItems":24,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"status":{"type":"string","minLength":1,"maxLength":240},"startDate":{"type":"string","minLength":1,"maxLength":240},"endDate":{"type":"string","minLength":1,"maxLength":240},"budget":{"anyOf":[{"type":"number","minimum":0},{"type":"string","minLength":1,"maxLength":40}]},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["advertiserId"],"additionalProperties":{}},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["idempotencyKey","campaign"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_creative_brief","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1},"accountId":{"type":"string"},"advertiserId":{"type":"string"},"campaignId":{"type":"string"},"creativeId":{"type":"string"},"creativeIds":{"type":"array","items":{"type":"string"}},"templateId":{"type":"string"},"assetId":{"type":"string"},"flightId":{"type":"string"},"taskId":{"type":"string"},"idempotencyKey":{"type":"string"},"persistence":{"type":"string","enum":["preview_only","save_to_studio"]},"advertiser":{},"campaign":{},"creative":{},"template":{},"assets":{},"brief":{},"objective":{"type":"string"},"audience":{},"requestedFormats":{"type":"array","items":{}},"force":{"type":"boolean"},"skipTraffickedRebuild":{"type":"boolean"},"prompt":{"type":"string"},"instructions":{"type":"array","items":{"type":"string"}},"input":{}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_creative_version","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"versionId":{"type":"string","minLength":1,"maxLength":240},"changeSummary":{"type":"string","minLength":1,"maxLength":2000},"creative":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"expectedVersion":{"anyOf":[{"type":"string"},{"type":"number"}]},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId","creativeId","idempotencyKey"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_flight","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"name":{"type":"string","minLength":1,"maxLength":240},"platform":{"type":"string","minLength":1,"maxLength":240},"creativeConfigs":{"default":[],"type":"array","items":{"type":"object","properties":{"creativeId":{"type":"string","minLength":1,"maxLength":240},"creativeVersion":{"type":"string","minLength":1,"maxLength":240},"creativeStatus":{"type":"string","minLength":1,"maxLength":240},"enabled":{"type":"boolean"},"channel":{"type":"string","minLength":1,"maxLength":240},"formatId":{"type":"string","minLength":1,"maxLength":240},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"previewUrl":{"type":"string","format":"uri"},"previewLinks":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"landingPageUrl":{"type":"string","format":"uri"},"clickThroughUrl":{"type":"string","format":"uri"},"tracking":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"trafficking":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["creativeId"],"additionalProperties":{}}},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"expectedVersion":{"anyOf":[{"type":"string"},{"type":"number"}]},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_production_plan","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"advertiserId":{"type":"string","minLength":1},"campaignId":{"type":"string","minLength":1},"creativeId":{"type":"string","minLength":1},"mode":{"default":"studio_instructions","type":"string","enum":["planning","studio_instructions"]},"brand":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"name":{"type":"string","minLength":1},"summary":{"type":"string","minLength":1},"tone":{"type":"string","minLength":1},"colours":{"type":"array","items":{"type":"string","minLength":1}},"targetAudience":{"type":"string","minLength":1}},"required":["name"]}]},"campaignName":{"type":"string","minLength":1},"format":{"type":"string","minLength":1},"brief":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"template":{"type":"object","properties":{"name":{"type":"string","minLength":1},"size":{"type":"string","minLength":1},"elements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["text","image","logo","button","shape","video","carousel","other"]},"label":{"type":"string","minLength":1},"roleHint":{"type":"string","enum":["headline","body","cta","logo","image","video","background","carousel","other"]},"locked":{"type":"boolean"},"editable":{"type":"object","properties":{"text":{"type":"boolean"},"asset":{"type":"boolean"},"style":{"type":"boolean"},"position":{"type":"boolean"},"size":{"type":"boolean"}}},"currentValue":{"type":"string"},"content":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"style":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"]},"size":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"}},"required":["width","height"]}},"required":["type"]}}}},"assets":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["logo","image","video","copy","other"]},"name":{"type":"string","minLength":1},"url":{"type":"string","format":"uri"},"description":{"type":"string","minLength":1}},"required":["type"]}},"constraints":{"type":"array","items":{"type":"string","minLength":1}},"creative":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"templateAnalysis":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"studioCapabilities":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestedOperationTypes":{"type":"array","items":{"type":"string","minLength":1}},"seatName":{"type":"string","minLength":1}},"required":["brand","campaignName","format","brief"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"delete_flight","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"resourceId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"expectedVersion":{"anyOf":[{"type":"string"},{"type":"number"}]},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId","flightId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"export_trafficked_assets","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"type":{"type":"string","enum":["json","csv"]},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["flightId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"generate_adserver_tag","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"force":{"type":"boolean"},"platform":{"type":"string","minLength":1,"maxLength":240},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"approvalId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["flightId","creativeId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"generate_preview_links","description":"Generate public review preview links for one or more saved Studio creatives without changing campaign content.. 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"creativeIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":240}},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_adserver_tag","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"force":{"type":"boolean"},"platform":{"type":"string","minLength":1,"maxLength":240},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"approvalId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["flightId","creativeId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_advertiser","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"templateId":{"type":"string","minLength":1,"maxLength":240},"assetId":{"type":"string","minLength":1,"maxLength":240},"previewId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"taskId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["advertiserId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_asset","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"templateId":{"type":"string","minLength":1,"maxLength":240},"assetId":{"type":"string","minLength":1,"maxLength":240},"previewId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"taskId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["assetId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_brand_profile","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"brandName":{"type":"string","minLength":1,"maxLength":120},"brandUrl":{"type":"string","maxLength":500,"format":"uri"},"advertiserId":{"type":"string","minLength":1,"maxLength":160},"requestedSections":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"forceRefresh":{"default":false,"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["brandName","brandUrl"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_brand_visuals","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"advertiserId":{"type":"string","minLength":1,"maxLength":160},"brandName":{"type":"string","minLength":1,"maxLength":160},"websiteUrl":{"type":"string","maxLength":1000,"format":"uri"},"storage":{"default":{},"type":"object","properties":{"bucket":{"type":"string","minLength":1},"cdnBaseUrl":{"type":"string","format":"uri"},"prefix":{"type":"string"}}},"options":{"default":{},"type":"object","properties":{"fetchLogos":{"default":true,"type":"boolean"},"fetchFonts":{"default":true,"type":"boolean"},"fetchImages":{"default":true,"type":"boolean"},"fetchVideos":{"default":true,"type":"boolean"},"fetchScreenshots":{"default":false,"type":"boolean"},"extractColours":{"default":true,"type":"boolean"},"extractCtas":{"default":true,"type":"boolean"},"useBrowser":{"default":true,"type":"boolean"},"scrapeSocial":{"default":true,"type":"boolean"},"includeAiGeneratedImages":{"default":false,"type":"boolean"},"maxAiGeneratedImages":{"default":6,"type":"integer","minimum":0,"maximum":6},"maxSocialImages":{"default":10,"type":"integer","minimum":0,"maximum":40},"maxVideos":{"default":12,"type":"integer","minimum":0,"maximum":30},"maxLogos":{"default":5,"type":"integer","minimum":0,"maximum":20},"maxFonts":{"default":10,"type":"integer","minimum":0,"maximum":30},"maxImages":{"default":30,"type":"integer","minimum":0,"maximum":80},"maxScreenshots":{"default":0,"type":"integer","minimum":0,"maximum":2}}},"seatName":{"type":"string","minLength":1}},"required":["advertiserId","brandName","websiteUrl"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_campaign","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"templateId":{"type":"string","minLength":1,"maxLength":240},"assetId":{"type":"string","minLength":1,"maxLength":240},"previewId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"taskId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["campaignId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_capabilities","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"includeHidden":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_competitor_intelligence","description":"Read saved canonical LeanrIQ Competitor Intelligence V2 for an advertiser-scoped competitor. This does not reacquire evidence or generate new recommendations.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"advertiserId":{"type":"string","minLength":1,"maxLength":240},"competitorId":{"type":"string","minLength":1,"maxLength":240},"competitorName":{"type":"string","minLength":1,"maxLength":180},"competitorDomain":{"type":"string","minLength":1,"maxLength":300},"website":{"type":"string","minLength":1,"maxLength":300},"includeEvidence":{"default":false,"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_creative","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"templateId":{"type":"string","minLength":1,"maxLength":240},"assetId":{"type":"string","minLength":1,"maxLength":240},"previewId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"taskId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["creativeId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_current_seat","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_current_user","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_flight","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"templateId":{"type":"string","minLength":1,"maxLength":240},"assetId":{"type":"string","minLength":1,"maxLength":240},"previewId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"taskId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["flightId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_media_buy_delivery","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"adcp_version":{"type":"string"},"account":{"type":"object","properties":{"account_id":{"type":"string","minLength":1,"maxLength":240}},"required":["account_id"],"additionalProperties":false},"media_buy_ids":{"minItems":1,"type":"array","items":{"type":"string","minLength":1,"maxLength":240}},"status_filter":{"anyOf":[{"type":"string","minLength":1,"maxLength":240},{"minItems":1,"type":"array","items":{"type":"string","minLength":1,"maxLength":240}}]},"start_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"end_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"include_package_daily_breakdown":{"type":"boolean"},"time_granularity":{"type":"string","enum":["hourly","daily","weekly","monthly"]},"include_window_breakdown":{"type":"boolean"},"attribution_window":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"reporting_dimensions":{"type":"object","properties":{"geo":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"device_type":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"device_platform":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"audience":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"placement":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"additionalProperties":false},"context":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"ext":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["media_buy_ids"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_permissions","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_preview_link","description":"get preview link. 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"templateId":{"type":"string","minLength":1,"maxLength":240},"assetId":{"type":"string","minLength":1,"maxLength":240},"previewId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"taskId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["previewId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_task","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"taskId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["taskId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_template","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"templateId":{"type":"string","minLength":1,"maxLength":240},"assetId":{"type":"string","minLength":1,"maxLength":240},"previewId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"taskId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["templateId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_trafficked_assets","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"templateId":{"type":"string","minLength":1,"maxLength":240},"assetId":{"type":"string","minLength":1,"maxLength":240},"previewId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"taskId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["flightId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_vertical_intelligence","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1},"accountId":{"type":"string"},"advertiserId":{"type":"string"},"campaignId":{"type":"string"},"creativeId":{"type":"string"},"creativeIds":{"type":"array","items":{"type":"string"}},"templateId":{"type":"string"},"assetId":{"type":"string"},"flightId":{"type":"string"},"taskId":{"type":"string"},"idempotencyKey":{"type":"string"},"persistence":{"type":"string","enum":["preview_only","save_to_studio"]},"advertiser":{},"campaign":{},"creative":{},"template":{},"assets":{},"brief":{},"objective":{"type":"string"},"audience":{},"requestedFormats":{"type":"array","items":{}},"force":{"type":"boolean"},"skipTraffickedRebuild":{"type":"boolean"},"prompt":{"type":"string"},"instructions":{"type":"array","items":{"type":"string"}},"input":{}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"launch_creative_campaign","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"campaignName":{"type":"string","minLength":1,"maxLength":240},"brand":{"anyOf":[{"type":"string","minLength":1,"maxLength":240},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":240},"domain":{"type":"string","minLength":1,"maxLength":253},"websiteUrl":{"type":"string","minLength":1,"maxLength":2000}},"additionalProperties":false}]},"workspaceId":{"type":"string","minLength":1,"maxLength":240},"workspaceAccessToken":{"type":"string","minLength":1,"maxLength":240},"product":{"type":"string","minLength":1,"maxLength":240},"audience":{"type":"string","minLength":1,"maxLength":1200},"objective":{"type":"string","minLength":1,"maxLength":4000},"offer":{"type":"string","minLength":1,"maxLength":240},"landingPageUrl":{"type":"string","minLength":1,"maxLength":2000},"KPI":{"type":"string","minLength":1,"maxLength":240},"funnelStage":{"type":"string","minLength":1,"maxLength":240},"vertical":{"type":"string","minLength":1,"maxLength":240},"channel":{"type":"string","minLength":1,"maxLength":240},"elements":{"maxItems":32,"type":"array","items":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":80}},"required":["type"],"additionalProperties":{}}]}},"revisionRequest":{"type":"string","minLength":1,"maxLength":4000},"performanceEvidence":{"maxItems":1000,"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"budget":{"anyOf":[{"type":"number"},{"type":"string"}]},"startDate":{"type":"string","minLength":1,"maxLength":240},"endDate":{"type":"string","minLength":1,"maxLength":240},"targetSizes":{"minItems":1,"maxItems":24,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"deliverables":{"maxItems":48,"type":"array","items":{"type":"string","minLength":1,"maxLength":240}},"tone":{"type":"string","minLength":1,"maxLength":240},"constraints":{"maxItems":40,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"mustInclude":{"maxItems":40,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"mustAvoid":{"maxItems":40,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"workspaceSource":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":240},"selectedTerritory":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"creativeBriefs":{"maxItems":12,"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"assetReferences":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"additionalProperties":{}},"executionMode":{"default":"preview","type":"string","enum":["preview","collaborate","operate","traffic_ready","publish","autopilot"]},"persistence":{"type":"string","enum":["preview_only","save_to_studio"]},"saveToStudio":{"type":"boolean"},"flightId":{"type":"string","minLength":1,"maxLength":240},"flightName":{"type":"string","minLength":1,"maxLength":240},"platform":{"type":"string","minLength":1,"maxLength":240},"destination":{"type":"string","minLength":1,"maxLength":120},"createCampaignIfMissing":{"type":"boolean"},"force":{"type":"boolean"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"approvalId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["objective"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanr_build_campaign_creative_set","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"advertiserId":{"type":"string","minLength":1,"maxLength":160},"accountId":{"type":"string","minLength":1,"maxLength":160},"brand":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"domain":{"type":"string","minLength":1,"maxLength":253},"brandId":{"type":"string","minLength":1,"maxLength":160},"websiteUrl":{"type":"string","minLength":1,"maxLength":2000}},"required":["domain"],"additionalProperties":false},"operator":{"type":"string","minLength":1,"maxLength":253},"billing":{"type":"string","enum":["agent","operator","advertiser"]},"sandbox":{"default":false,"type":"boolean"},"createAdvertiserIfMissing":{"default":false,"type":"boolean"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":160},"campaignName":{"type":"string","minLength":1,"maxLength":160},"objective":{"type":"string","minLength":1,"maxLength":240},"audience":{"type":"string","minLength":1,"maxLength":1200},"KPI":{"type":"string","minLength":1,"maxLength":240},"funnelStage":{"type":"string","minLength":1,"maxLength":120},"budget":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"string","minLength":1,"maxLength":120}]},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"targetSizes":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"desiredVariantCount":{"type":"integer","minimum":1,"maximum":24},"generateTags":{"default":false,"type":"boolean"},"saveToStudio":{"default":true,"type":"boolean"},"strictBrandCompliance":{"default":true,"type":"boolean"},"notes":{"type":"string","maxLength":2000},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["campaignName","objective","audience","KPI","funnelStage"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_build_ad","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1},"accountId":{"type":"string"},"advertiserId":{"type":"string"},"campaignId":{"type":"string"},"creativeId":{"type":"string"},"creativeIds":{"type":"array","items":{"type":"string"}},"templateId":{"type":"string"},"assetId":{"type":"string"},"flightId":{"type":"string"},"taskId":{"type":"string"},"idempotencyKey":{"type":"string"},"persistence":{"type":"string","enum":["preview_only","save_to_studio"]},"advertiser":{},"campaign":{},"creative":{},"template":{},"assets":{},"brief":{},"objective":{"type":"string"},"audience":{},"requestedFormats":{"type":"array","items":{}},"force":{"type":"boolean"},"skipTraffickedRebuild":{"type":"boolean"},"prompt":{"type":"string"},"instructions":{"type":"array","items":{"type":"string"}},"input":{}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_build_agent_ad","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1},"accountId":{"type":"string"},"advertiserId":{"type":"string"},"campaignId":{"type":"string"},"creativeId":{"type":"string"},"creativeIds":{"type":"array","items":{"type":"string"}},"templateId":{"type":"string"},"assetId":{"type":"string"},"flightId":{"type":"string"},"taskId":{"type":"string"},"idempotencyKey":{"type":"string"},"persistence":{"type":"string","enum":["preview_only","save_to_studio"]},"advertiser":{},"campaign":{},"creative":{},"template":{},"assets":{},"brief":{},"objective":{"type":"string"},"audience":{},"requestedFormats":{"type":"array","items":{}},"force":{"type":"boolean"},"skipTraffickedRebuild":{"type":"boolean"},"prompt":{"type":"string"},"instructions":{"type":"array","items":{"type":"string"}},"input":{}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_campaign_builder","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"phase":{"default":"territories","type":"string","enum":["territories","build"]},"brand":{"type":"string","minLength":1},"campaignName":{"type":"string","minLength":1},"product":{"type":"string","minLength":1},"audience":{"type":"string","minLength":1},"objective":{"type":"string","minLength":1},"offer":{"type":"string"},"landingPageUrl":{"type":"string"},"deliverables":{"maxItems":24,"type":"array","items":{"type":"string","minLength":1}},"targetSizes":{"maxItems":24,"type":"array","items":{"type":"string","minLength":1}},"campaignId":{"type":"string"},"advertiserId":{"type":"string"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1},"selectedTerritory":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"positioning":{"type":"string"},"audienceInsight":{"type":"string"},"creativeTerritory":{"type":"string"},"messageAngles":{"type":"array","items":{"type":"string"}},"messageHierarchy":{"type":"array","items":{"type":"string"}},"ctaDirection":{"type":"string"},"visualDirection":{"type":"string"},"risksToAvoid":{"type":"array","items":{"type":"string"}}},"required":["id","name"],"additionalProperties":{}},"idempotencyKey":{"type":"string","minLength":1}},"required":["brand","campaignName","product","audience","objective"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_create_brief","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1},"accountId":{"type":"string"},"advertiserId":{"type":"string"},"campaignId":{"type":"string"},"creativeId":{"type":"string"},"creativeIds":{"type":"array","items":{"type":"string"}},"templateId":{"type":"string"},"assetId":{"type":"string"},"flightId":{"type":"string"},"taskId":{"type":"string"},"idempotencyKey":{"type":"string"},"persistence":{"type":"string","enum":["preview_only","save_to_studio"]},"advertiser":{},"campaign":{},"creative":{},"template":{},"assets":{},"brief":{},"objective":{"type":"string"},"audience":{},"requestedFormats":{"type":"array","items":{}},"force":{"type":"boolean"},"skipTraffickedRebuild":{"type":"boolean"},"prompt":{"type":"string"},"instructions":{"type":"array","items":{"type":"string"}},"input":{}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_create_creative_brief","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1},"accountId":{"type":"string"},"advertiserId":{"type":"string"},"campaignId":{"type":"string"},"creativeId":{"type":"string"},"creativeIds":{"type":"array","items":{"type":"string"}},"templateId":{"type":"string"},"assetId":{"type":"string"},"flightId":{"type":"string"},"taskId":{"type":"string"},"idempotencyKey":{"type":"string"},"persistence":{"type":"string","enum":["preview_only","save_to_studio"]},"advertiser":{},"campaign":{},"creative":{},"template":{},"assets":{},"brief":{},"objective":{"type":"string"},"audience":{},"requestedFormats":{"type":"array","items":{}},"force":{"type":"boolean"},"skipTraffickedRebuild":{"type":"boolean"},"prompt":{"type":"string"},"instructions":{"type":"array","items":{"type":"string"}},"input":{}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_create_production_plan","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"advertiserId":{"type":"string","minLength":1},"campaignId":{"type":"string","minLength":1},"creativeId":{"type":"string","minLength":1},"mode":{"default":"studio_instructions","type":"string","enum":["planning","studio_instructions"]},"brand":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"name":{"type":"string","minLength":1},"summary":{"type":"string","minLength":1},"tone":{"type":"string","minLength":1},"colours":{"type":"array","items":{"type":"string","minLength":1}},"targetAudience":{"type":"string","minLength":1}},"required":["name"]}]},"campaignName":{"type":"string","minLength":1},"format":{"type":"string","minLength":1},"brief":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"template":{"type":"object","properties":{"name":{"type":"string","minLength":1},"size":{"type":"string","minLength":1},"elements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["text","image","logo","button","shape","video","carousel","other"]},"label":{"type":"string","minLength":1},"roleHint":{"type":"string","enum":["headline","body","cta","logo","image","video","background","carousel","other"]},"locked":{"type":"boolean"},"editable":{"type":"object","properties":{"text":{"type":"boolean"},"asset":{"type":"boolean"},"style":{"type":"boolean"},"position":{"type":"boolean"},"size":{"type":"boolean"}}},"currentValue":{"type":"string"},"content":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"style":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"]},"size":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"}},"required":["width","height"]}},"required":["type"]}}}},"assets":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["logo","image","video","copy","other"]},"name":{"type":"string","minLength":1},"url":{"type":"string","format":"uri"},"description":{"type":"string","minLength":1}},"required":["type"]}},"constraints":{"type":"array","items":{"type":"string","minLength":1}},"creative":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"templateAnalysis":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"studioCapabilities":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestedOperationTypes":{"type":"array","items":{"type":"string","minLength":1}},"seatName":{"type":"string","minLength":1}},"required":["brand","campaignName","format","brief"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_create_strategy","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"brand":{"type":"string","minLength":1},"product":{"type":"string","minLength":1},"audience":{"type":"string","minLength":1},"goal":{"type":"string","minLength":1},"offer":{"type":"string"},"channel":{"type":"string"},"constraints":{"type":"array","items":{"type":"string"}},"context":{"type":"string"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["brand","product","audience","goal"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_current_seat","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_get_brand_profile","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"brandName":{"type":"string","minLength":1,"maxLength":120},"brandUrl":{"type":"string","maxLength":500,"format":"uri"},"advertiserId":{"type":"string","minLength":1,"maxLength":160},"requestedSections":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"forceRefresh":{"default":false,"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["brandName","brandUrl"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_get_brand_visuals","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"advertiserId":{"type":"string","minLength":1,"maxLength":160},"brandName":{"type":"string","minLength":1,"maxLength":160},"websiteUrl":{"type":"string","maxLength":1000,"format":"uri"},"storage":{"default":{},"type":"object","properties":{"bucket":{"type":"string","minLength":1},"cdnBaseUrl":{"type":"string","format":"uri"},"prefix":{"type":"string"}}},"options":{"default":{},"type":"object","properties":{"fetchLogos":{"default":true,"type":"boolean"},"fetchFonts":{"default":true,"type":"boolean"},"fetchImages":{"default":true,"type":"boolean"},"fetchVideos":{"default":true,"type":"boolean"},"fetchScreenshots":{"default":false,"type":"boolean"},"extractColours":{"default":true,"type":"boolean"},"extractCtas":{"default":true,"type":"boolean"},"useBrowser":{"default":true,"type":"boolean"},"scrapeSocial":{"default":true,"type":"boolean"},"includeAiGeneratedImages":{"default":false,"type":"boolean"},"maxAiGeneratedImages":{"default":6,"type":"integer","minimum":0,"maximum":6},"maxSocialImages":{"default":10,"type":"integer","minimum":0,"maximum":40},"maxVideos":{"default":12,"type":"integer","minimum":0,"maximum":30},"maxLogos":{"default":5,"type":"integer","minimum":0,"maximum":20},"maxFonts":{"default":10,"type":"integer","minimum":0,"maximum":30},"maxImages":{"default":30,"type":"integer","minimum":0,"maximum":80},"maxScreenshots":{"default":0,"type":"integer","minimum":0,"maximum":2}}},"seatName":{"type":"string","minLength":1}},"required":["advertiserId","brandName","websiteUrl"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_get_competitor_creative_intelligence","description":"Run canonical LeanrIQ Competitor Intelligence V2 for one advertiser-scoped competitor. Defaults match Studio: 90-day DISPLAY evidence and no mixed social/video banner inference. Without forceRefresh, an existing canonical result is reused when available.. Deprecated alias for run_competitor_intelligence. Classification: creates billable AI usage. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"competitorId":{"type":"string","minLength":1,"maxLength":200},"competitorName":{"type":"string","minLength":1,"maxLength":180},"name":{"type":"string","minLength":1,"maxLength":180},"brandName":{"type":"string","minLength":1,"maxLength":180},"competitorWebsite":{"type":"string","minLength":1,"maxLength":300},"competitorDomain":{"type":"string","minLength":1,"maxLength":300},"competitorPositioning":{"type":"string","minLength":1,"maxLength":1200},"competitorKeyMessages":{"maxItems":8,"type":"array","items":{"type":"string","minLength":1,"maxLength":300}},"website":{"type":"string","minLength":1,"maxLength":300},"domain":{"type":"string","minLength":1,"maxLength":300},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"targetMarkets":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"region":{"type":"string","minLength":2,"maxLength":16},"lookbackDays":{"default":90,"type":"integer","minimum":1,"maximum":730},"evidenceLimit":{"type":"integer","minimum":1,"maximum":48},"limit":{"type":"integer","minimum":1,"maximum":48},"forceRefresh":{"default":false,"type":"boolean"},"strategyMode":{"default":"BOTH","type":"string","enum":["REPLICATE","DIFFERENTIATE","BOTH"]},"evidenceMode":{"default":"DISPLAY","type":"string","enum":["DISPLAY","CROSS_CHANNEL","BOTH"]},"advertiserGuidanceSnapshot":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"market":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"markets":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"strategyModes":{"maxItems":2,"type":"array","items":{"type":"string","enum":["REPLICATE","DIFFERENTIATE"]}},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_get_vertical_intelligence","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1},"accountId":{"type":"string"},"advertiserId":{"type":"string"},"campaignId":{"type":"string"},"creativeId":{"type":"string"},"creativeIds":{"type":"array","items":{"type":"string"}},"templateId":{"type":"string"},"assetId":{"type":"string"},"flightId":{"type":"string"},"taskId":{"type":"string"},"idempotencyKey":{"type":"string"},"persistence":{"type":"string","enum":["preview_only","save_to_studio"]},"advertiser":{},"campaign":{},"creative":{},"template":{},"assets":{},"brief":{},"objective":{"type":"string"},"audience":{},"requestedFormats":{"type":"array","items":{}},"force":{"type":"boolean"},"skipTraffickedRebuild":{"type":"boolean"},"prompt":{"type":"string"},"instructions":{"type":"array","items":{"type":"string"}},"input":{}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_launch_creative_campaign","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"campaignName":{"type":"string","minLength":1,"maxLength":240},"brand":{"anyOf":[{"type":"string","minLength":1,"maxLength":240},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":240},"domain":{"type":"string","minLength":1,"maxLength":253},"websiteUrl":{"type":"string","minLength":1,"maxLength":2000}},"additionalProperties":false}]},"workspaceId":{"type":"string","minLength":1,"maxLength":240},"workspaceAccessToken":{"type":"string","minLength":1,"maxLength":240},"product":{"type":"string","minLength":1,"maxLength":240},"audience":{"type":"string","minLength":1,"maxLength":1200},"objective":{"type":"string","minLength":1,"maxLength":4000},"offer":{"type":"string","minLength":1,"maxLength":240},"landingPageUrl":{"type":"string","minLength":1,"maxLength":2000},"KPI":{"type":"string","minLength":1,"maxLength":240},"funnelStage":{"type":"string","minLength":1,"maxLength":240},"vertical":{"type":"string","minLength":1,"maxLength":240},"channel":{"type":"string","minLength":1,"maxLength":240},"elements":{"maxItems":32,"type":"array","items":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":80}},"required":["type"],"additionalProperties":{}}]}},"revisionRequest":{"type":"string","minLength":1,"maxLength":4000},"performanceEvidence":{"maxItems":1000,"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"budget":{"anyOf":[{"type":"number"},{"type":"string"}]},"startDate":{"type":"string","minLength":1,"maxLength":240},"endDate":{"type":"string","minLength":1,"maxLength":240},"targetSizes":{"minItems":1,"maxItems":24,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"deliverables":{"maxItems":48,"type":"array","items":{"type":"string","minLength":1,"maxLength":240}},"tone":{"type":"string","minLength":1,"maxLength":240},"constraints":{"maxItems":40,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"mustInclude":{"maxItems":40,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"mustAvoid":{"maxItems":40,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"workspaceSource":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":240},"selectedTerritory":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"creativeBriefs":{"maxItems":12,"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"assetReferences":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"additionalProperties":{}},"executionMode":{"default":"preview","type":"string","enum":["preview","collaborate","operate","traffic_ready","publish","autopilot"]},"persistence":{"type":"string","enum":["preview_only","save_to_studio"]},"saveToStudio":{"type":"boolean"},"flightId":{"type":"string","minLength":1,"maxLength":240},"flightName":{"type":"string","minLength":1,"maxLength":240},"platform":{"type":"string","minLength":1,"maxLength":240},"destination":{"type":"string","minLength":1,"maxLength":120},"createCampaignIfMissing":{"type":"boolean"},"force":{"type":"boolean"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"approvalId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["objective"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_qa_creative","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"brand":{"type":"string","minLength":1},"format":{"type":"string","minLength":1},"objective":{"type":"string","minLength":1},"creative":{"type":"object","properties":{"headline":{"type":"string"},"body":{"type":"string"},"cta":{"type":"string"},"imageDescription":{"type":"string"},"landingPageUrl":{"type":"string","format":"uri"}}},"rules":{"type":"array","items":{"type":"string"}},"context":{"type":"string"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["brand","format","objective","creative"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_recommend_workflow","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"intent":{"type":"string","minLength":1},"knownIds":{"type":"object","properties":{"advertiserId":{"type":"string","minLength":1},"campaignId":{"type":"string","minLength":1},"creativeId":{"type":"string","minLength":1},"flightId":{"type":"string","minLength":1}},"additionalProperties":false}},"required":["intent"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_resolve_or_provision_advertiser","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"advertiserId":{"type":"string","minLength":1,"maxLength":240},"accountId":{"type":"string","minLength":1,"maxLength":240},"brand":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":240},"domain":{"type":"string","minLength":1,"maxLength":240},"brandId":{"type":"string","minLength":1,"maxLength":240},"websiteUrl":{"type":"string","minLength":1,"maxLength":2000}},"required":["domain"],"additionalProperties":false},"operator":{"type":"string","minLength":1,"maxLength":240},"billing":{"type":"string","enum":["agent","operator","advertiser"]},"sandbox":{"type":"boolean"},"createIfMissing":{"type":"boolean"},"dryRun":{"type":"boolean"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_run_creative_chain","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"campaignName":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"creativeIds":{"minItems":1,"maxItems":24,"type":"array","items":{"type":"string","minLength":1,"maxLength":240}},"targetSizes":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"objective":{"type":"string","minLength":1,"maxLength":240},"audience":{"type":"string","minLength":1,"maxLength":1200},"KPI":{"type":"string","minLength":1,"maxLength":240},"funnelStage":{"type":"string","minLength":1,"maxLength":240},"budget":{"anyOf":[{"type":"number"},{"type":"string"}]},"startDate":{"type":"string","minLength":1,"maxLength":240},"endDate":{"type":"string","minLength":1,"maxLength":240},"brand":{"anyOf":[{"type":"string"},{"type":"object","properties":{},"additionalProperties":{}}]},"product":{"type":"string","minLength":1,"maxLength":240},"goal":{"type":"string","minLength":1,"maxLength":240},"deliverables":{"type":"array","items":{"type":"string"}},"offer":{"type":"string","minLength":1,"maxLength":240},"channel":{"type":"string","minLength":1,"maxLength":240},"tone":{"type":"string","minLength":1,"maxLength":240},"constraints":{"type":"array","items":{"type":"string"}},"mustInclude":{"type":"array","items":{"type":"string"}},"mustAvoid":{"type":"array","items":{"type":"string"}},"saveToStudio":{"type":"boolean"},"force":{"type":"boolean"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"buildAds":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leanriq_select_seat","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_accessible_seats","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_advertisers","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"status":{"type":"string","minLength":1,"maxLength":240},"cursor":{"type":"string","minLength":1,"maxLength":240},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":100},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_assets","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"status":{"type":"string","minLength":1,"maxLength":240},"cursor":{"type":"string","minLength":1,"maxLength":240},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":100},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_campaigns","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"status":{"type":"string","minLength":1,"maxLength":240},"cursor":{"type":"string","minLength":1,"maxLength":240},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":100},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_competitor_evidence","description":"List qualified display evidence from saved canonical LeanrIQ Competitor Intelligence V2. Cross-channel inspiration is not mixed into DISPLAY evidence.. Classification: read-only. Execution: synchronous. Task support: forbidden. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"advertiserId":{"type":"string","minLength":1,"maxLength":240},"competitorId":{"type":"string","minLength":1,"maxLength":240},"competitorName":{"type":"string","minLength":1,"maxLength":180},"competitorDomain":{"type":"string","minLength":1,"maxLength":300},"website":{"type":"string","minLength":1,"maxLength":300},"includeEvidence":{"default":true,"type":"boolean"},"limit":{"default":24,"type":"integer","exclusiveMinimum":0,"maximum":50},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_competitors","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"status":{"type":"string","minLength":1,"maxLength":240},"cursor":{"type":"string","minLength":1,"maxLength":240},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":100},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_creative_versions","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"templateId":{"type":"string","minLength":1,"maxLength":240},"assetId":{"type":"string","minLength":1,"maxLength":240},"previewId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"taskId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["creativeId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_creatives","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"advertiserName":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"campaignName":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"status":{"type":"string","minLength":1,"maxLength":240},"cursor":{"type":"string","minLength":1,"maxLength":240},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":100},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_flights","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"status":{"type":"string","minLength":1,"maxLength":240},"cursor":{"type":"string","minLength":1,"maxLength":240},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":100},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_tasks","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"status":{"type":"string","minLength":1,"maxLength":240},"cursor":{"type":"string","minLength":1,"maxLength":240},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":100},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_templates","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"status":{"type":"string","minLength":1,"maxLength":240},"cursor":{"type":"string","minLength":1,"maxLength":240},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":100},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"preview_trafficking_output","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"force":{"type":"boolean"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId","flightId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"promote_creative_workspace","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":240},"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"campaignName":{"type":"string","minLength":1,"maxLength":240},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"approvalId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["workspaceId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"provide_performance_feedback","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"feedback":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId","feedback","idempotencyKey"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"push_flight_to_yahoo","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"creativeIds":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":240}},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"approvalId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["flightId","idempotencyKey"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"qa_creative","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"brand":{"type":"string","minLength":1},"format":{"type":"string","minLength":1},"objective":{"type":"string","minLength":1},"creative":{"type":"object","properties":{"headline":{"type":"string"},"body":{"type":"string"},"cta":{"type":"string"},"imageDescription":{"type":"string"},"landingPageUrl":{"type":"string","format":"uri"}}},"rules":{"type":"array","items":{"type":"string"}},"context":{"type":"string"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["brand","format","objective","creative"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"refresh_brand_profile","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"brandName":{"type":"string","minLength":1,"maxLength":120},"brandUrl":{"type":"string","maxLength":500,"format":"uri"},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"requestedSections":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"forceRefresh":{"default":false,"type":"boolean"},"accountId":{"type":"string","minLength":1,"maxLength":240},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["brandName","brandUrl","advertiserId","accountId","idempotencyKey"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"refresh_brand_visuals","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"seatId":{"type":"string","minLength":1},"advertiserId":{"type":"string","minLength":1,"maxLength":160},"brandName":{"type":"string","minLength":1,"maxLength":160},"websiteUrl":{"type":"string","maxLength":1000,"format":"uri"},"storage":{"default":{},"type":"object","properties":{"bucket":{"type":"string","minLength":1},"cdnBaseUrl":{"type":"string","format":"uri"},"prefix":{"type":"string"}}},"options":{"default":{},"type":"object","properties":{"fetchLogos":{"default":true,"type":"boolean"},"fetchFonts":{"default":true,"type":"boolean"},"fetchImages":{"default":true,"type":"boolean"},"fetchVideos":{"default":true,"type":"boolean"},"fetchScreenshots":{"default":false,"type":"boolean"},"extractColours":{"default":true,"type":"boolean"},"extractCtas":{"default":true,"type":"boolean"},"useBrowser":{"default":true,"type":"boolean"},"scrapeSocial":{"default":true,"type":"boolean"},"includeAiGeneratedImages":{"default":false,"type":"boolean"},"maxAiGeneratedImages":{"default":6,"type":"integer","minimum":0,"maximum":6},"maxSocialImages":{"default":10,"type":"integer","minimum":0,"maximum":40},"maxVideos":{"default":12,"type":"integer","minimum":0,"maximum":30},"maxLogos":{"default":5,"type":"integer","minimum":0,"maximum":20},"maxFonts":{"default":10,"type":"integer","minimum":0,"maximum":30},"maxImages":{"default":30,"type":"integer","minimum":0,"maximum":80},"maxScreenshots":{"default":0,"type":"integer","minimum":0,"maximum":2}}},"accountId":{"type":"string","minLength":1,"maxLength":240},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"seatName":{"type":"string","minLength":1}},"required":["advertiserId","brandName","websiteUrl","accountId","idempotencyKey"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"restore_creative_version","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"versionId":{"type":"string","minLength":1,"maxLength":240},"changeSummary":{"type":"string","minLength":1,"maxLength":2000},"creative":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"expectedVersion":{"anyOf":[{"type":"string"},{"type":"number"}]},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId","creativeId","versionId","idempotencyKey"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"retraffick_creative","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"force":{"type":"boolean"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId","flightId","creativeId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"retraffick_flight","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"force":{"type":"boolean"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId","flightId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"retry_task","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"taskId":{"type":"string","minLength":1,"maxLength":240},"accountId":{"type":"string","minLength":1,"maxLength":240},"reason":{"type":"string","maxLength":1000},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["taskId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"revise_creative","description":"Revise an existing saved Studio creative by executing a requested change from plain-language instructions. Use this directly when the user supplies a creativeId and asks to change copy, imagery, layout, colours, typography, CTA, branding, or any other editable creative element: do not respond with a copy-paste instruction or ask the user to make the edit in Studio. The revision saves to Studio by default and returns fresh preview links plus QA/certification context; set dryRun only when the user explicitly asks for an unsaved preview.. Classification: creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"prompt":{"type":"string","minLength":1,"maxLength":4000},"instructions":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"persistence":{"type":"string","enum":["preview_only","save_to_studio"]},"saveToStudio":{"type":"boolean"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"expectedVersion":{"anyOf":[{"type":"string"},{"type":"number"}]},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["creativeId","idempotencyKey"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"run_competitor_intelligence","description":"Run canonical LeanrIQ Competitor Intelligence V2 for one advertiser-scoped competitor. Defaults match Studio: 90-day DISPLAY evidence and no mixed social/video banner inference. Without forceRefresh, an existing canonical result is reused when available.. Classification: creates billable AI usage. Execution: synchronous. Task support: forbidden. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"competitorId":{"type":"string","minLength":1,"maxLength":200},"competitorName":{"type":"string","minLength":1,"maxLength":180},"name":{"type":"string","minLength":1,"maxLength":180},"brandName":{"type":"string","minLength":1,"maxLength":180},"competitorWebsite":{"type":"string","minLength":1,"maxLength":300},"competitorDomain":{"type":"string","minLength":1,"maxLength":300},"competitorPositioning":{"type":"string","minLength":1,"maxLength":1200},"competitorKeyMessages":{"maxItems":8,"type":"array","items":{"type":"string","minLength":1,"maxLength":300}},"website":{"type":"string","minLength":1,"maxLength":300},"domain":{"type":"string","minLength":1,"maxLength":300},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"targetMarkets":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"region":{"type":"string","minLength":2,"maxLength":16},"lookbackDays":{"default":90,"type":"integer","minimum":1,"maximum":730},"evidenceLimit":{"type":"integer","minimum":1,"maximum":48},"limit":{"type":"integer","minimum":1,"maximum":48},"forceRefresh":{"default":false,"type":"boolean"},"strategyMode":{"default":"BOTH","type":"string","enum":["REPLICATE","DIFFERENTIATE","BOTH"]},"evidenceMode":{"default":"DISPLAY","type":"string","enum":["DISPLAY","CROSS_CHANNEL","BOTH"]},"advertiserGuidanceSnapshot":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"market":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"markets":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"strategyModes":{"maxItems":2,"type":"array","items":{"type":"string","enum":["REPLICATE","DIFFERENTIATE"]}},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"run_creative_chain","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"campaignName":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"creativeIds":{"minItems":1,"maxItems":24,"type":"array","items":{"type":"string","minLength":1,"maxLength":240}},"targetSizes":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"objective":{"type":"string","minLength":1,"maxLength":240},"audience":{"type":"string","minLength":1,"maxLength":1200},"KPI":{"type":"string","minLength":1,"maxLength":240},"funnelStage":{"type":"string","minLength":1,"maxLength":240},"budget":{"anyOf":[{"type":"number"},{"type":"string"}]},"startDate":{"type":"string","minLength":1,"maxLength":240},"endDate":{"type":"string","minLength":1,"maxLength":240},"brand":{"anyOf":[{"type":"string"},{"type":"object","properties":{},"additionalProperties":{}}]},"product":{"type":"string","minLength":1,"maxLength":240},"goal":{"type":"string","minLength":1,"maxLength":240},"deliverables":{"type":"array","items":{"type":"string"}},"offer":{"type":"string","minLength":1,"maxLength":240},"channel":{"type":"string","minLength":1,"maxLength":240},"tone":{"type":"string","minLength":1,"maxLength":240},"constraints":{"type":"array","items":{"type":"string"}},"mustInclude":{"type":"array","items":{"type":"string"}},"mustAvoid":{"type":"array","items":{"type":"string"}},"saveToStudio":{"type":"boolean"},"force":{"type":"boolean"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"buildAds":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"traffick_creative","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"force":{"type":"boolean"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId","flightId","creativeId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"traffick_flight","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"force":{"type":"boolean"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId","flightId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"update_advertiser","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"expectedVersion":{"anyOf":[{"type":"string"},{"type":"number"}]},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"patch":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":240},"domain":{"type":"string","minLength":1,"maxLength":253},"websiteUrl":{"type":"string","minLength":1,"maxLength":2000},"status":{"type":"string","minLength":1,"maxLength":240},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"additionalProperties":{}},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId","idempotencyKey","advertiserId","patch"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"update_campaign","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"expectedVersion":{"anyOf":[{"type":"string"},{"type":"number"}]},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"campaignId":{"type":"string","minLength":1,"maxLength":240},"patch":{"type":"object","properties":{"advertiserId":{"type":"string","minLength":1,"maxLength":240},"name":{"type":"string","minLength":1,"maxLength":240},"campaignName":{"type":"string","minLength":1,"maxLength":240},"objective":{"type":"string","minLength":1,"maxLength":2000},"funnelStage":{"type":"string","minLength":1,"maxLength":200},"targetImpressions":{"anyOf":[{"type":"number","minimum":0},{"type":"string","minLength":1,"maxLength":40}]},"primaryKpi":{"type":"string","minLength":1,"maxLength":240},"secondaryKpi":{"type":"string","minLength":1,"maxLength":240},"targetAudience":{"type":"string","minLength":1,"maxLength":2000},"creativeBrief":{"type":"string","minLength":1,"maxLength":8000},"requiredSizes":{"maxItems":24,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"preferredSizes":{"maxItems":24,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"supportedSizes":{"maxItems":24,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"status":{"type":"string","minLength":1,"maxLength":240},"startDate":{"type":"string","minLength":1,"maxLength":240},"endDate":{"type":"string","minLength":1,"maxLength":240},"budget":{"anyOf":[{"type":"number","minimum":0},{"type":"string","minLength":1,"maxLength":40}]},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"additionalProperties":{}},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["accountId","idempotencyKey","campaignId","patch"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"update_flight","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"name":{"type":"string","minLength":1,"maxLength":240},"platform":{"type":"string","minLength":1,"maxLength":240},"creativeConfigs":{"default":[],"type":"array","items":{"type":"object","properties":{"creativeId":{"type":"string","minLength":1,"maxLength":240},"creativeVersion":{"type":"string","minLength":1,"maxLength":240},"creativeStatus":{"type":"string","minLength":1,"maxLength":240},"enabled":{"type":"boolean"},"channel":{"type":"string","minLength":1,"maxLength":240},"formatId":{"type":"string","minLength":1,"maxLength":240},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"previewUrl":{"type":"string","format":"uri"},"previewLinks":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"landingPageUrl":{"type":"string","format":"uri"},"clickThroughUrl":{"type":"string","format":"uri"},"tracking":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"trafficking":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["creativeId"],"additionalProperties":{}}},"idempotencyKey":{"type":"string","minLength":1,"maxLength":240},"expectedVersion":{"anyOf":[{"type":"string"},{"type":"number"}]},"approvalId":{"type":"string","minLength":1,"maxLength":240},"dryRun":{"type":"boolean"},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["flightId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"validate_flight","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":240},"advertiserId":{"type":"string","minLength":1,"maxLength":240},"campaignId":{"type":"string","minLength":1,"maxLength":240},"creativeId":{"type":"string","minLength":1,"maxLength":240},"templateId":{"type":"string","minLength":1,"maxLength":240},"assetId":{"type":"string","minLength":1,"maxLength":240},"previewId":{"type":"string","minLength":1,"maxLength":240},"flightId":{"type":"string","minLength":1,"maxLength":240},"taskId":{"type":"string","minLength":1,"maxLength":240},"seatId":{"type":"string","minLength":1},"seatName":{"type":"string","minLength":1}},"required":["flightId"],"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":57,"grade":"C","scanned_at":"2026-09-23T17:17:26.730Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-23T17:17:26.792Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1840ms"]},"poisoning":{"score":15,"max":15,"notes":["87 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 21 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["repository not readable: repo not found"]},"identity":{"score":2,"max":10,"notes":["no repository or website to verify"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://iq.leanrads.com/mcp","reachable":true,"authRequired":false,"latencyMs":1840,"serverInfo":{"name":"leanriq-agent-gateway","version":"1.0.0"}}],"packages":[],"repo":{"found":false,"owner":"leanrads","repo":"LeanrIQ","error":"repo not found"},"icon":{"url":null,"source":"none"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}