Skip to main content
Glama

Get Campaign Readiness

dynamoi_get_campaign_readiness
Read-only

Use this when a musician wants to promote a new single or release with ads ("promote my new single", "run ads for my song"): it checks whether a Smart Campaign or YouTube campaign is ready before launching the campaign. This validates readiness and targeting without creating a campaign. Complete budget inputs also return the shared, nonbinding campaign funding preview with known or unavailable credit coverage, card upper bounds and expiry timing. A preview is not consent. TOTAL launch requires the client to accept the current TOTAL funding consent and pass acceptedTotalConsentVersion plus acceptedTotalConsentCopyHash; never pass DAILY consent fields for TOTAL. Funding uses credit first, then prepaid funds, then the saved card, subject to the launch guards. Do not use this to create or mutate campaigns.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "artistId": "<artistId>",
      "campaignType": "<campaignType>"
    },
    "name": "dynamoi_get_campaign_readiness"
  }
}

Input Schema

NameRequiredDescriptionDefault
adCopyNo
formatNo
endDateNoLast day ads run
artistIdYes
budgetTypeNo
spotifyUrlNo
contentTypeNo
budgetAmountNo
campaignTypeYes
mediaAssetIdsNo
youtubeEntriesNo
youtubeVideoIdNo
locationTargetsNo
youtubeStrategyNoYouTube campaign strategy. Labels for users: CHEAPEST_VIEWS = Views, ORGANIC_VIEWS = Watch Time, SUBSCRIBERS = Subscribers, ORGANIC_VIEWS_AND_SUBSCRIBERS = Channel Growth (default for non-monetized channels), ADSENSE_ROI = Revenue (monetized channels only). Read dynamoi://youtube/campaign-strategies before recommending or changing one.
youtubePlaylistIdNo
useAiGeneratedCopyNo

Output Schema

NameRequiredDescriptionDefault
codeNo
dataNo
kindNo
fieldNo
statusYes
draftIdNo
messageNo
retryableNo
nextActionNo
failureStageNo
prerequisiteNo
screeningResultNo
retryAfterSecondsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added
  2. Removed
  3. Changed5 schema fields changed
    • changedOutput schema / additionalProperties
      Previous value: -{}New value: +false
    • addedOutput schema / properties / data
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "artistId": {
      +          "type": "string"
      +        },
      +        "artistName": {
      +          "type": "string"
      +        },
      +        "blockingIssues": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "campaignType": {
      +          "enum": [
      +            "SMART_CAMPAIGN",
      +            "YOUTUBE"
      +          ],
      +          "type": "string"
      +        },
      +        "isReady": {
      +          "type": "boolean"
      +        },
      +        "missingInputs": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "normalizedTargeting": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": false,
      +              "properties": {
      +                "mode": {
      +                  "const": "GLOBAL",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "mode"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "additionalProperties": false,
      +              "properties": {
      +                "countries": {
      +                  "items": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "code": {
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "code",
      +                      "name"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "mode": {
      +                  "const": "COUNTRIES",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "countries",
      +                "mode"
      +              ],
      +              "type": "object"
      +            }
      +          ]
      +        },
      +        "recommendedNextAction": {
      +          "type": "string"
      +        },
      +        "warnings": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "artistId",
      +        "artistName",
      +        "blockingIssues",
      +        "campaignType",
      +        "isReady",
      +        "missingInputs",
      +        "normalizedTargeting",
      +        "recommendedNextAction",
      +        "warnings"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "actionRequired": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "summary": {
      +          "type": "string"
      +        },
      +        "warnings": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "summary"
      +      ],
      +      "type": "object"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / kind
      Added value: +{
      +  "enum": [
      +    "validation",
      +    "business",
      +    "platform",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / message
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / status / enum
      Previous value: -[
      -  "success",
      -  "partial_success",
      -  "error"
      -]New value: +[
      +  "success",
      +  "error"
      +]
  4. Added

TDQS

A4.2/5.0
Behavior5/5

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

Well beyond the annotations (readOnly/openWorld/non-destructive), it discloses that budget inputs return a nonbinding funding preview with credit coverage, card upper bounds and expiry, that a preview is not consent, and that TOTAL launch requires acceptedTotalConsentVersion plus acceptedTotalConsentCopyHash and must never receive DAILY consent fields. It also states the funding waterfall (credit, then prepaid, then saved card) and that launch guards apply.

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

Conciseness4/5

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

Front-loaded with the trigger scenario and the read-only guarantee, then layered detail on funding and consent. The funding-waterfall and consent sentence is dense and somewhat tangential to a readiness check, but the overall length is defensible for a 16-parameter tool.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and the description covers the core decision (readiness validation) plus funding/consent behavior. However, for a 16-parameter tool with 13% schema coverage it omits guidance on the many optional targeting and creative parameters, and the phantom consent fields leave the caller without a valid way to satisfy the stated TOTAL requirement.

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

Parameters3/5

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

With only 13% schema coverage across 16 parameters, the description adds real meaning for budgetType (DAILY vs TOTAL consent semantics) and campaignType, but leaves most parameters (locationTargets, mediaAssetIds, adCopy, spotifyUrl, format, youtubeEntries) unexplained. It also references consent parameters (acceptedTotalConsentVersion, acceptedTotalConsentCopyHash) that do not exist in the schema, which additionalProperties=false makes especially confusing.

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

Purpose5/5

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

The description opens with a specific verb and resource: it 'checks whether a Smart Campaign or YouTube campaign is ready before launching,' and explicitly adds 'This validates readiness and targeting without creating a campaign.' That distinguishes it clearly from creation/mutation siblings like dynamoi_get_campaign or dynamoi_manage_youtube_draft.

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

Usage Guidelines4/5

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

Strong trigger guidance with quoted user phrasings ('promote my new single', 'run ads for my song') and an explicit exclusion ('Do not use this to create or mutate campaigns'). It stops short of naming the specific sibling tool to use instead for creation, so the agent must infer the alternative from the tool list.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.