Koskamo

Dynamoi MCP

An MCP server for music promotion and distribution that allows AI agents to manage Smart Links, check campaign results, and launch Spotify and YouTube ad campaigns with explicit user consent. It supports OAuth 2.1 authentication and integrates with clients like Claude, ChatGPT, and Cursor.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Dynamoi MCP logo, by DynamoiCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by Dynamoi
MCP endpoint (Streamable HTTP)
https://dynamoi.com/mcp
Vendor documentation

What its tools do

51 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

51 of 51 have a description · 51 of 51 declare behavior hints · 0 of 49 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Check campaign results and analytics
  • Create and manage free Smart Links
  • Launch Spotify and YouTube ad campaigns
  • Manage music distribution releases

Source and maintenance

Community listingRegistry 1.0.10
Maintenance checked

Protocol and capabilities

Server
dynamoi 1.0.10
MCP protocol negotiated in check
2025-11-25
Tools
51 advertised
Resources
3 advertised
Resource templates
0 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "resources": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Dynamoi provides Smart Links, campaign and audience analytics, campaign drafts, and distribution status for the signed-in user's own artists. Call dynamoi_about for the product overview. Use these tools only when the user asks about their own Dynamoi account, artists, campaigns, Smart Links, or releases. Never promise streams, followers, approval, or any other result. You are operating Dynamoi's tools on behalf of the authenticated user. This surface exposes billing and earnings status reads, account and team management, referral claims, artist onboarding, campaign draft preparation, release handoffs, Smart Link updates and controls, support requests, and Meta/YouTube connection links that the user opens to authorize access. Draft preparation never launches or changes live campaigns; release handoffs never accept agreements or deliver music to stores. Purchases, subscriptions and plan setup, checkout, adding funds, launching or editing live campaigns, billing-country changes, and account deletion remain dashboard-only. For those actions, tell the user: "You can do this in the Dynamoi dashboard at https://dynamoi.com/dashboard." Do not create or surface a purchase or checkout URL. Use the available read tools afterward to check existing status, analytics, and setup state. Principles: - Answer general marketing, songwriting, lyrics, or social-media advice natively unless the user explicitly asks about their Dynamoi account, artists, campaigns, analytics, or Smart Links. - Do not call Dynamoi tools just to "check context" for generic advice. - For an explicit account overview or uncertain account context, use dynamoi_get_account_overview. If the request identifies the artist, campaign, or Smart Link, use its targeted read directly; resolve missing or ambiguous identity with the relevant roster or search tool first. - For artist rosters, use dynamoi_list_artists. - For an identified campaign, call dynamoi_get_campaign directly. Use dynamoi_list_campaigns to resolve a missing or ambiguous campaign, and use dynamoi_get_artist_analytics when the user asks for artist performance. For analysis of the artist's own YouTube channel (trends, videos, countries, traffic sources, advertising-tagged versus other-source views, revenue), use dynamoi_get_youtube_channel_data for channel analysis, not campaign attribution. Preserve the returned source, coverage, freshness, and synthetic/sample qualifications; do not treat synthetic/sample data as observed channel results, campaign attribution, or actual earnings/payouts. Treat returned ad revenue as estimated revenue, not an AdSense payout. These tools are read-only. - YouTube campaigns each have a strategy with its own goal. Before judging results, read the strategyGuide that dynamoi_get_campaign returns (or dynamoi://youtube/campaign-strategies). When reporting to users, say "the ad network" (you may name Google once; do not repeat "Google Ads"; it serves on YouTube), "advertising-tagged views" (YouTube's ADVERTISING traffic source, which undercounts ad-driven views), "campaign-period lift" (views above the pre-campaign baseline while the campaign runs, mostly ad sessions) and "organic lift" (growth in sources the ads do not touch, such as search and suggested views, or lift that persists after spend stops). Never call all non-ADVERTISING views organic: ad clicks into a playlist are credited mostly to PLAYLIST and SUBSCRIBER. Use strategy labels such as "Revenue Optimization" with users, not keys such as ADSENSE_ROI. - Spotify growth audit, tracked playlist analytics, and streaming audience analytics answer different questions from paid campaign analytics: use dynamoi_get_growth_audit, dynamoi_get_playlist_analytics, and dynamoi_get_audience_analytics for those insight requests, and preserve each response's coverage or freshness evidence. - For music distribution, use dynamoi_get_distribution_application to explain the exact five requirements and current application status. Use dynamoi_apply_for_distribution only after explicit user confirmation and complete country/adult-attestation fields. An application starts manual review and never guarantees approval or distributes a release. - For free Smart Links, use dynamoi_create_smart_link_from_spotify, dynamoi_create_smart_links_from_spotify_artist, dynamoi_list_smart_links, and dynamoi_get_smart_link. Use dynamoi_update_smart_link_description only for one link's public description, or dynamoi_update_smart_link_artist_settings only for artist-level theme and validated pixel settings. - When reading Smart Links, set includeAnalytics=true for visit/click analytics and includeArtistSettings=true for artist-level theme or pixel settings. - Smart Link pixel tools accept validated pixel IDs only. Do not ask for arbitrary JavaScript, tag-manager snippets, or script code. - Never claim you changed something unless the tool returned an actual mutation result. - For writes, confirm intent and restate what will change. - After a successful write tool call, answer directly from the returned record instead of chaining more tools just to restate the result. - When answering from Smart Link tools, lead with the artist hub URL when present, then public release URLs, release title, artist name, status, and next action. Do not include internal UUIDs unless the user explicitly asks for IDs or you need an ID for a follow-up tool call.

Tools

51 advertised

dynamoi_onboard_artist — Find and Onboard an Artist
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Search Spotify artists by query, preview a Spotify artist URL, or intake an artist from a Spotify or YouTube URL. Intake creates a workspace and starts onboarding using web organization policy; organizationId selects an editable organization. Existing claims, entitlements, caps and provider quotas apply. Sign in through the app or web first.

dynamoi_onboard_artist input schema
{
  "type": "object",
  "required": [
    "action"
  ],
  "properties": {
    "url": {
      "type": "string",
      "minLength": 1
    },
    "query": {
      "type": "string",
      "maxLength": 80,
      "minLength": 3
    },
    "action": {
      "enum": [
        "search",
        "preview",
        "spotify",
        "youtube"
      ],
      "type": "string"
    },
    "locale": {
      "type": "string",
      "default": "en"
    },
    "countryCode": {
      "type": "string",
      "maxLength": 2,
      "minLength": 2
    },
    "organizationId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
dynamoi_onboard_artist output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_onboard_artist annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "destructiveHint": true
}
dynamoi_get_artist_billing_country — Get Artist Billing Country
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read the artist billing country. Existing commercial currency stays fixed. This is not tax residency.

dynamoi_get_artist_billing_country input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
dynamoi_get_artist_billing_country output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_get_artist_billing_country annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_update_account_profile — Update Account Profile
Advertised by the server during the last successful anonymous check.
Advertised destructive

Preview a display name or preferred language change. Show the preview and obtain explicit confirmation, then echo the expected current values with confirm=true.

dynamoi_update_account_profile input schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 100,
      "minLength": 1
    },
    "confirm": {
      "type": "boolean"
    },
    "expectedName": {
      "type": [
        "string",
        "null"
      ]
    },
    "preferredLocale": {
      "type": "string",
      "minLength": 1
    },
    "expectedPreferredLocale": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "additionalProperties": false
}
dynamoi_update_account_profile output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_update_account_profile annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": true
}
dynamoi_open_workspace — Open Artist Workspace
Advertised by the server during the last successful anonymous check.
Advertised read-only

Open the read-only Dynamoi workspace when the user wants to browse their existing artists, campaigns, Smart Links and observed results in ChatGPT. Returns an authorized artist roster or an honest empty account state. Does not create links, change campaigns, start purchases or connect accounts. Use individual read tools for follow-up details.

dynamoi_open_workspace input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
dynamoi_open_workspace output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "required": [
        "artistCount",
        "artists"
      ],
      "properties": {
        "artists": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "name"
            ],
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "name": {
                "type": "string",
                "maxLength": 160,
                "minLength": 1
              },
              "organizationName": {
                "type": "string",
                "maxLength": 160,
                "minLength": 1
              }
            },
            "additionalProperties": false
          },
          "maxItems": 50
        },
        "nextCursor": {
          "type": "string",
          "maxLength": 2048,
          "minLength": 1
        },
        "artistCount": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0
        }
      },
      "additionalProperties": false
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string",
      "maxLength": 200
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_open_workspace annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_about — About Dynamoi
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when a musician asks where to promote, distribute, or grow their music: Dynamoi is a music promotion platform that works with any distributor. Use this when the user asks what Dynamoi is, who it is for, or what it offers — including before sign-in or before choosing a tool. Returns the canonical About Dynamoi text plus a short structured summary covering free Smart Links, managed Smart Campaigns, YouTube campaigns, distribution, company facts, support, and getting started. This is read-only product information, not account data.

dynamoi_about input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
dynamoi_about output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_about annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
dynamoi_get_account_overview — Get Account Overview
Advertised by the server during the last successful anonymous check.
Advertised read-only

Start here when a musician asks to promote a new single, check how a release is doing, make a song link, get music on Spotify, or grow a YouTube channel and the artist is not yet identified. Use this when the user explicitly asks about the signed-in Dynamoi account itself, such as who is logged in, how many organizations or artists it can access, or whether account-level platform connections exist. Pass intent to match that explicit account question; it defaults to account_overview. Do not use this to confirm a specific Meta or YouTube onboarding attempt because this account-level state can span multiple artists; use dynamoi_get_platform_status for the target artist instead. Do not use this to enumerate artists one by one; use dynamoi_list_artists for that. Never use this to 'check context' before answering generic Instagram, lyrics, songwriting, or marketing-advice questions, even if Dynamoi is attached.

dynamoi_get_account_overview input schema
{
  "type": "object",
  "properties": {
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "intent": {
      "enum": [
        "account_overview",
        "artist_access_check",
        "organization_access_check",
        "platform_connection_check"
      ],
      "type": "string",
      "default": "account_overview"
    }
  },
  "additionalProperties": false
}
dynamoi_get_account_overview output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "user": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "state": {
          "type": "object",
          "properties": {},
          "additionalProperties": {}
        },
        "artists": {
          "type": "object",
          "required": [
            "count",
            "summaries"
          ],
          "properties": {
            "count": {
              "type": "number"
            },
            "summaries": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "summary": {
                    "type": "string"
                  },
                  "publicUrl": {
                    "type": "string"
                  }
                },
                "additionalProperties": {}
              }
            }
          },
          "additionalProperties": false
        },
        "summary": {
          "type": "string"
        },
        "artistCount": {
          "type": "number"
        },
        "organizationCount": {
          "type": "number"
        },
        "recommendedNextActions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": {}
    },
    "kind": {
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": {}
}
dynamoi_get_account_overview annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_list_artists — List Artists
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants to see which artists or YouTube channels they manage, along with billing status, active campaign count, and their role. Pass artistId when you need the full profile/readiness details for one artist instead of a roster page. Do not use this for campaign details; use dynamoi_list_campaigns or dynamoi_get_campaign. Never use this for generic social-media or marketing advice, including Instagram follower-growth questions, unless the user explicitly asked about their Dynamoi roster. If the result is empty, the user is brand-new — do not stop with 'no records found'; route through dynamoi_get_account_overview.recommendedNextActions.

dynamoi_list_artists input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1
    },
    "cursor": {
      "type": "string"
    },
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
dynamoi_list_artists output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "artists": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "summary": {
                "type": "string"
              },
              "publicUrl": {
                "type": "string"
              }
            },
            "additionalProperties": {}
          }
        },
        "summary": {
          "type": "string"
        },
        "nextCursor": {
          "type": "string"
        },
        "totalCount": {
          "type": "number"
        }
      },
      "additionalProperties": {}
    },
    "kind": {
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": {}
}
dynamoi_list_artists annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_search — Search Dynamoi
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user mentions an artist, release, campaign, or smart link but you do not yet know the exact record to inspect. Do not use this for analytics summaries or billing questions once you already know the target record. If the result is empty for a brand-new user (no artists yet), do not respond 'no records found' as a terminal answer — instead suggest creating their first artist hub via dynamoi_create_smart_links_from_spotify_artist.

dynamoi_search input schema
{
  "type": "object",
  "properties": {
    "type": {
      "enum": [
        "artist",
        "campaign",
        "smartlink"
      ],
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1
    },
    "query": {
      "type": "string",
      "maxLength": 120
    },
    "cursor": {
      "type": "string"
    },
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "includeArchived": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
dynamoi_search output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "summary": {
                "type": "string"
              },
              "publicUrl": {
                "type": "string"
              }
            },
            "additionalProperties": {}
          }
        },
        "summary": {
          "type": "string"
        },
        "nextCursor": {
          "type": "string"
        },
        "totalCount": {
          "type": "number"
        }
      },
      "additionalProperties": {}
    },
    "kind": {
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": {}
}
dynamoi_search annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
search — Search (OpenAI Connectors)
Advertised by the server during the last successful anonymous check.
Advertised read-only

OpenAI ChatGPT Deep Research / Connectors search contract. Returns matching Dynamoi artists, campaigns, and Smart Links so they can be cited in a deep-research session. For regular ChatGPT chat use dynamoi_search instead.

search input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
search output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "summary": {
                "type": "string"
              },
              "publicUrl": {
                "type": "string"
              }
            },
            "additionalProperties": {}
          }
        }
      },
      "additionalProperties": {}
    },
    "kind": {
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": {}
}
search annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
fetch — Fetch (OpenAI Connectors)
Advertised by the server during the last successful anonymous check.
Advertised read-only

OpenAI ChatGPT Deep Research / Connectors fetch contract. Given an id returned by `search` (formatted as 'artist:<uuid>', 'campaign:<uuid>', or 'smartlink:<uuid>'), returns the full record for citation.

fetch input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
fetch output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "publicUrl": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "kind": {
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": {}
}
fetch annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_list_campaigns — List Campaigns
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants to browse campaigns for one artist, optionally filtered by type or status. Do not use this for a single campaign deep dive; use dynamoi_get_campaign for that. Never use this to personalize generic marketing advice. If the user has no artists yet, do not call this — route via dynamoi_get_account_overview first.

dynamoi_list_campaigns input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1
    },
    "cursor": {
      "type": "string"
    },
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "status": {
      "enum": [
        "AWAITING_SMART_LINK",
        "ACTIVE",
        "ARCHIVED",
        "CONTENT_VALIDATION",
        "DEPLOYING",
        "ENDED",
        "FAILED",
        "PAUSED",
        "READY_FOR_REVIEW",
        "SUBSCRIPTION_PAUSED"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "campaignType": {
      "enum": [
        "SMART_CAMPAIGN",
        "YOUTUBE"
      ],
      "type": "string"
    }
  },
  "additionalProperties": false
}
dynamoi_list_campaigns output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "summary": {
          "type": "string"
        },
        "campaigns": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "summary": {
                "type": "string"
              },
              "publicUrl": {
                "type": "string"
              }
            },
            "additionalProperties": {}
          }
        },
        "nextCursor": {
          "type": "string"
        },
        "totalCount": {
          "type": "number"
        }
      },
      "additionalProperties": {}
    },
    "kind": {
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": {}
}
dynamoi_list_campaigns annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_get_campaign — Get Campaign
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants full details for one campaign, including budget, targeting, platform status, and next actions. YouTube campaigns return youtubeStrategy and strategyGuide: read the guide's goal and judgeBy before interpreting results. Set includeAnalytics=true for paid delivery, includeChannelResults=true for observed YouTube channel results with paid and organic views (never attributed to the campaign), includeDeploymentStatus=true for delivery/deployment blockers, and includeCountries=true only when the full country list is needed. Do not use this for a campaign list; use dynamoi_list_campaigns instead. After a successful launch or campaign mutation, prefer format=summary when you need a follow-up read to relay the final answer.

dynamoi_get_campaign input schema
{
  "type": "object",
  "required": [
    "campaignId"
  ],
  "properties": {
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "campaignId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "includeAnalytics": {
      "type": "boolean"
    },
    "includeCountries": {
      "type": "boolean"
    },
    "analyticsDateRange": {
      "type": "object",
      "required": [
        "end",
        "start"
      ],
      "properties": {
        "end": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        "start": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        }
      },
      "additionalProperties": false
    },
    "analyticsGranularity": {
      "enum": [
        "TOTAL",
        "DAILY"
      ],
      "type": "string"
    },
    "includeChannelResults": {
      "type": "boolean"
    },
    "includeDeploymentStatus": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
dynamoi_get_campaign output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "artistId": {
          "type": "string"
        },
        "publicUrl": {
          "type": "string"
        },
        "nextActions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "contentTitle": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "kind": {
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": {}
}
dynamoi_get_campaign annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_get_artist_analytics — Get Artist Analytics
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this for "how is my release doing?" and "are my ads working?" questions about an artist's Dynamoi campaigns. Use this when the user wants artist-level performance across all campaigns, including 30-day rollups or daily breakdowns. Pass granularity=DAILY when the user asks for a daily breakdown. Pass format=summary when the user wants a written rollup, a strongest-campaign verdict, or a direct answer you can relay immediately. If this tool already returned the requested strongest-campaign comparison, stop and answer instead of calling more analytics tools. For one campaign's metrics, use dynamoi_get_campaign with includeAnalytics=true.

dynamoi_get_artist_analytics input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "dateRange": {
      "type": "object",
      "required": [
        "end",
        "start"
      ],
      "properties": {
        "end": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        "start": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        }
      },
      "additionalProperties": false
    },
    "granularity": {
      "enum": [
        "TOTAL",
        "DAILY"
      ],
      "type": "string"
    }
  },
  "additionalProperties": false
}
dynamoi_get_artist_analytics output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "summary": {
          "type": "string"
        },
        "artistId": {
          "type": "string"
        },
        "dateRange": {
          "type": "object",
          "required": [
            "end",
            "start"
          ],
          "properties": {
            "end": {
              "type": "string"
            },
            "start": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "artistName": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "kind": {
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": {}
}
dynamoi_get_artist_analytics annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_get_growth_audit — Get Spotify Growth Audit
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user asks for an artist's Spotify monthly listeners, listener growth over time, growth audit or score, playlist reach, or growth recommendations. The response carries its status, coverage dates, and limitations; preserve unavailable or stale status and do not treat a missing metric as zero. This is Spotify and market insight data, not paid campaign performance.

dynamoi_get_growth_audit input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
dynamoi_get_growth_audit output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_get_growth_audit annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_get_playlist_analytics — Get Playlist Analytics
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user asks about an artist's tracked playlist placements, reach, or playlist movement. The response includes freshness and snapshot dates with the playlist and movement rows. These observed placements are not attributed to a paid campaign.

dynamoi_get_playlist_analytics input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
dynamoi_get_playlist_analytics output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_get_playlist_analytics annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_list_campaign_drafts — List Campaign Drafts
Advertised by the server during the last successful anonymous check.
Advertised read-only

List an artist's in-progress campaign creation drafts. Returns campaignId, campaignType, title, activeStep, playLinkId and updatedAt for each recoverable draft. Use these campaignIds with dynamoi_smart_campaign_ad_copy or the campaign creation tools to inspect and resume setup. Created campaigns are excluded; use dynamoi_list_campaigns for those.

dynamoi_list_campaign_drafts input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
dynamoi_list_campaign_drafts output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_list_campaign_drafts annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_get_audience_analytics — Get Audience Analytics
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user asks about an artist's streaming audience by country, service, paid/free tier, or daily trend. Choose range=7d, 30d, or 90d; it defaults to 30d. The response comes from audience analytics and preserves the requested date range. If the source is temporarily unavailable, report that instead of treating it as zero audience.

dynamoi_get_audience_analytics input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "range": {
      "enum": [
        "7d",
        "30d",
        "90d"
      ],
      "type": "string",
      "default": "30d"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
dynamoi_get_audience_analytics output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_get_audience_analytics annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_get_youtube_channel_data — Get YouTube Channel Data
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this for "how is my YouTube channel doing?" or "what is growing my channel?" once a channel is linked. Use this to analyze an artist's own connected YouTube channel's estimated ad revenue to inform AdSense strategy and channel growth, alongside subscribers, views, watch time or country, device and subscribed-status breakdowns: paged channel data from the YouTube Analytics warehouse or explicitly qualified synthetic/sample data. Pick one dataset: channel_daily (views, watch time, subscribers gained and lost, likes, shares, playlist starts, estimated revenue, ad revenue, gross revenue, monetized playbacks, CPM and playback-based CPM), video_daily (per-video metrics with titles; filter with videoIds), country_daily, traffic_source_daily, search_term_daily (YouTube search terms for the whole channel), subscribed_status_daily, device_daily, operating_system_daily, playback_location_daily, creator_content_type_daily, or video_catalog (video titles and publish dates). traffic_source_daily rows with source ADVERTISING carry trafficClass=paid and every other source carries trafficClass=organic, but that label only groups sources and is not organic proof: ad clicks that land in a playlist are credited mostly to PLAYLIST and SUBSCRIBER, so trafficClass=organic rows include ad sessions. Organic lift is growth in sources ads do not touch (YT_SEARCH, RELATED_VIDEO, browse features) or lift that persists after spend stops. Warehouse data is observed on the channel, not attributed to any campaign. Preserve the returned source, coverage, freshness, and synthetic/sample qualifications; do not treat synthetic/sample data as observed channel results, campaign attribution, or actual earnings/payouts. Treat returned ad revenue as estimated revenue, not an AdSense payout. The first page of any dataset (including format=summary) also carries one adsense block, the same figures the Dynamoi dashboard and app show: formats (long-form versus Shorts AdSense revenue and RPM), recovery and campaigns (incremental AdSense since each campaign and whether it earned back the billed amount), and countries (AdSense per ad playback against similar channels). It is estimated, not a payout, and covers windowFromDay to windowThroughDay, which is not always the requested range: compare against those fields. recovery.state building or unavailable and null figures mean unknown, never zero; adsense is null outside the YouTube Partner Program, on later pages, or when temporarily unavailable (adsenseNote explains). Compare periods yourself and use the campaigns block (dates, strategy, promoted videos) as context. YouTube data arrives about 2-3 days late and revenue can lag further: check coverage before comparing, and treat placeholderDays and missingDays as unknown, never zero. Not available yet: audience demographics, per-video traffic sources and per-video search terms. Needs a connected channel; a channel that must be reconnected is refused. Returns no ad spend. Before judging a campaign's strategy, read the strategyGuide from dynamoi_get_campaign. Page with nextCursor; format=summary returns only the summary, coverage and adsense.

dynamoi_get_youtube_channel_data input schema
{
  "type": "object",
  "required": [
    "artistId",
    "dataset",
    "endDate",
    "startDate"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 1000,
      "minimum": 1
    },
    "cursor": {
      "type": "string",
      "maxLength": 1000,
      "minLength": 1
    },
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "dataset": {
      "enum": [
        "channel_daily",
        "video_daily",
        "country_daily",
        "traffic_source_daily",
        "search_term_daily",
        "subscribed_status_daily",
        "device_daily",
        "operating_system_daily",
        "playback_location_daily",
        "creator_content_type_daily",
        "video_catalog"
      ],
      "type": "string"
    },
    "endDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "videoIds": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Za-z0-9_-]{11}$"
      },
      "maxItems": 50,
      "minItems": 1
    },
    "startDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "additionalProperties": false
}
dynamoi_get_youtube_channel_data output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "dataset": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "artistId": {
          "type": "string"
        },
        "rowCount": {
          "type": "number"
        },
        "nextCursor": {
          "type": "string"
        },
        "channelName": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": {}
    },
    "kind": {
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": {}
}
dynamoi_get_youtube_channel_data annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_get_billing — Get Billing
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use action=native_commerce for the native commerce projection (full profile, read-only; no subscription changes or invoices). Use this when the user asks about billing state, credit balance, promo limits, subscription status, campaign-fund deposits, or whether billing blocks launches for one artist. This is a read-only status check; it does not create checkout links or collect payment. paymentMethod contains only the shared masked display details (brand or bank, type, last four digits and expiry); null means details are unavailable, not proof that no method exists. Each deposit in prefundPayments is pending (payment not yet confirmed), cleared (Stripe says paid and the funds are usable), failed (the payment did not complete) or held (paid, but funding is on hold for review and not usable yet). A Checkout link alone is never a deposit. To add campaign funds, use the Dynamoi dashboard at https://dynamoi.com/dashboard; for other billing setup tell the user: 'You can do this in the Dynamoi dashboard at https://dynamoi.com/dashboard.' Then call this tool again to confirm the status. Do not use this for campaign analytics or platform connection troubleshooting.

dynamoi_get_billing input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "action": {
      "enum": [
        "summary",
        "native_commerce"
      ],
      "type": "string"
    },
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "onboardingAttemptId": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
dynamoi_get_billing output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_get_billing annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_get_action_center — Get Action Center
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read an artist's platform Action Center after authenticated artist access. Preserve revision, task states, steps and primary/secondary actions: open_url opens a URL; navigate is dashboard navigation. Reading does not complete or approve a task. Unavailable data is an error, not an empty task list.

dynamoi_get_action_center input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
dynamoi_get_action_center output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_get_action_center annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_get_earnings — Get Distribution Earnings
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read distribution earnings for the authenticated payee only, optionally restricted to their artistIds. Team or artist access never grants payee access. action=overview returns the payee's own share in USD, range totals, monthly totals and at most 50 detail rows, narrowed by trackKey, storeKey, storeFamily and countryCode (totals remain for the whole range). action=ranking returns up to 300 rows by dimension (track, artist, store, country), with their filtered totalUsd, narrowed by trackKey, storeFamily and countryCode. action=geography returns {rows} of the country map with optional prior-window comparison. action=statement returns the aggregate monthly statement for one statement month: use axis=statement and equal fromMonth/toMonth, with no exploration filters or cursor. No new files are created. The detailed CSV is a bulk file download; the human downloads it on web at https://dynamoi.com/dashboard/user/royalties. Rankings and prior-window geography read an equal preceding window within the owner's 60-month bound. For overview pagination, pass nextCursor unchanged to continue with the same range, axis, artists and filters. fromMonth/toMonth are inclusive YYYY-MM, at most 60 months. axis=statement groups by statement month; earned groups by royalty month, while payee share always follows statement month. Nullable amounts or counts mean unavailable; an explicit 0 is measured zero. Empty rows mean no matching data; an error means unavailable, never zero earnings. This grants no payout or tax authority and performs no writes.

dynamoi_get_earnings input schema
{
  "type": "object",
  "required": [
    "fromMonth",
    "toMonth"
  ],
  "properties": {
    "axis": {
      "enum": [
        "statement",
        "earned"
      ],
      "type": "string",
      "default": "statement"
    },
    "limit": {
      "type": "integer",
      "default": 300,
      "maximum": 300,
      "minimum": 1
    },
    "action": {
      "enum": [
        "overview",
        "ranking",
        "geography",
        "statement"
      ],
      "type": "string",
      "default": "overview"
    },
    "cursor": {
      "type": "object",
      "required": [
        "countryCode",
        "month",
        "storeKey",
        "trackKey"
      ],
      "properties": {
        "month": {
          "type": "string",
          "pattern": "^\\d{4}-(0[1-9]|1[0-2])$"
        },
        "storeKey": {
          "type": "string",
          "maxLength": 500,
          "minLength": 1
        },
        "trackKey": {
          "type": "string",
          "maxLength": 500,
          "minLength": 1
        },
        "countryCode": {
          "type": "string",
          "maxLength": 10
        }
      },
      "additionalProperties": false
    },
    "toMonth": {
      "type": "string",
      "pattern": "^\\d{4}-(0[1-9]|1[0-2])$"
    },
    "storeKey": {
      "type": "string",
      "maxLength": 500,
      "minLength": 1
    },
    "trackKey": {
      "type": "string",
      "maxLength": 500,
      "minLength": 1
    },
    "artistIds": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      },
      "maxItems": 50,
      "minItems": 1
    },
    "dimension": {
      "enum": [
        "track",
        "artist",
        "store",
        "country"
      ],
      "type": "string",
      "default": "track"
    },
    "fromMonth": {
      "type": "string",
      "pattern": "^\\d{4}-(0[1-9]|1[0-2])$"
    },
    "withPrior": {
      "type": "boolean",
      "default": true
    },
    "countryCode": {
      "type": "string",
      "maxLength": 10
    },
    "storeFamily": {
      "type": "string",
      "maxLength": 500,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
dynamoi_get_earnings output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_get_earnings annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_get_team — Get Team
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read organization members and pending invitations after artist and organization settings authority checks. Artist collaboration alone never grants roster access. No invitation tokens or role mutations. Optional scope=artist reads artist collaborators only; organization is the default scope. includeHistory=true includes retained deleted, accepted and expired invitations; the default returns pending invitations.

dynamoi_get_team input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "scope": {
      "enum": [
        "artist",
        "organization"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "includeHistory": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
dynamoi_get_team output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_get_team annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_manage_team — Manage Team
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Invite an editor with action=invite_editor: targetId is the artist ID; email and clientRequestId are required. Preview first, obtain user confirmation, then send phase=confirm with expectedSnapshot. Confirmation sends a transactional email, limited to 10 confirmed invitations per inviter/workspace/hour. Other actions change an organization member's role, remove a member or revoke a pending organization invitation using the same authority and transactional protections as web. targetId is the membership or pending invitation row ID from dynamoi_get_team; scope defaults to organization and may explicitly select artist. Admin and verified last-admin protections apply; removal can revoke access and pending invitations.

dynamoi_manage_team input schema
{
  "type": "object",
  "required": [
    "action",
    "targetId"
  ],
  "properties": {
    "role": {
      "enum": [
        "admin",
        "editor",
        "viewer"
      ],
      "type": "string"
    },
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "maxLength": 320
    },
    "phase": {
      "enum": [
        "preview",
        "confirm"
      ],
      "type": "string"
    },
    "scope": {
      "enum": [
        "artist",
        "organization"
      ],
      "type": "string"
    },
    "action": {
      "enum": [
        "update_role",
        "remove_member",
        "revoke_invitation",
        "invite_editor"
      ],
      "type": "string"
    },
    "targetId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Organization membership or pending invitation row ID from dynamoi_get_team."
    },
    "clientRequestId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "expectedSnapshot": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
dynamoi_manage_team output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_manage_team annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "destructiveHint": true
}
dynamoi_get_audit_log — Get AuditLog
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read sanitized artist or organization settings audit events, or your own 12 recent account activity entries with scope=account (artist access required; no cursor). Organization scope requires organization settings authority, beyond artist access. Pass nextCursor unchanged within the same scope; cursors are bounded and scope-checked.

dynamoi_get_audit_log input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "scope": {
      "enum": [
        "artist",
        "organization",
        "account"
      ],
      "type": "string",
      "default": "artist"
    },
    "cursor": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
dynamoi_get_audit_log output schema
{
  "type": "object",
  "$defs": {
    "__schema0": {
      "type": "object",
      "required": [
        "key"
      ],
      "properties": {
        "key": {
          "type": "string"
        },
        "values": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "anyOf": [
              {
                "$ref": "#/$defs/__schema0"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/$defs/__schema0"
                }
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ]
          }
        }
      },
      "additionalProperties": false
    }
  },
  "anyOf": [
    {
      "type": "object",
      "required": [
        "status"
      ],
      "properties": {
        "code": {
          "enum": [
            "ACCOUNT_READ_ONLY",
            "INVALID_SPOTIFY_SOURCE",
            "CAPABILITY_REQUIRED",
            "INSUFFICIENT_SCOPE",
            "TENANT_ACCESS_DENIED",
            "STATE_CONFLICT",
            "QUOTE_CHANGED",
            "RATE_LIMITED",
            "OUTPUT_INVALID",
            "UNKNOWN_EFFECT"
          ],
          "type": "string"
        },
        "data": {
          "type": "object",
          "properties": {},
          "additionalProperties": {}
        },
        "kind": {
          "enum": [
            "validation",
            "business",
            "platform",
            "unknown"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "status": {
          "enum": [
            "success",
            "partial_success",
            "error"
          ],
          "type": "string"
        },
        "draftId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "message": {
          "type": "string"
        },
        "retryable": {
          "type": "boolean"
        },
        "nextAction": {
          "type": "object",
          "required": [
            "kind"
          ],
          "properties": {
            "kind": {
              "enum": [
                "provide_input",
                "read_status",
                "reconnect",
                "handoff"
              ],
              "type": "string"
            },
            "field": {
              "type": "string",
              "maxLength": 120,
              "minLength": 1
            },
            "reason": {
              "type": "string",
              "maxLength": 240,
              "minLength": 1
            }
          },
          "additionalProperties": false
        },
        "failureStage": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "prerequisite": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        },
        "screeningResult": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "retryAfterSeconds": {
          "type": "integer",
          "maximum": 86400,
          "minimum": 0
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "status",
        "data"
      ],
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "action",
              "actorEmail",
              "description",
              "id",
              "itemContext",
              "itemName",
              "timestampIso"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "action": {
                "$ref": "#/$defs/__schema0"
              },
              "itemName": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/__schema0"
                  }
                ]
              },
              "actorEmail": {
                "type": "string"
              },
              "description": {
                "$ref": "#/$defs/__schema0"
              },
              "itemContext": {
                "$ref": "#/$defs/__schema0"
              },
              "timestampIso": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "status": {
          "type": "string",
          "const": "success"
        }
      },
      "additionalProperties": false
    }
  ]
}
dynamoi_get_audit_log annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_claim_referral_code — Claim Referral Code
Advertised by the server during the last successful anonymous check.
Advertised destructive

Reserve or change your own referral code. This does not accept referral program terms; the user must accept them on the referral page before joining.

dynamoi_claim_referral_code input schema
{
  "type": "object",
  "required": [
    "code"
  ],
  "properties": {
    "code": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
dynamoi_claim_referral_code output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_claim_referral_code annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": true
}
dynamoi_get_referrals — Get Referrals
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read the authenticated caller's referral dashboard after artist access, without cookie attribution or commission refresh. USD cents and observed states: PENDING is not yet available; AVAILABLE is eligible, not payout approval; WITHDRAWAL_PENDING is awaiting payout; PAID is paid. Never describe pending or available amounts as approved or paid.

dynamoi_get_referrals input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "page": {
      "type": "integer",
      "default": 1,
      "maximum": 100000,
      "minimum": 1
    },
    "filter": {
      "enum": [
        "all",
        "available",
        "pending",
        "paid",
        "void"
      ],
      "type": "string",
      "default": "all"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "pageSize": {
      "type": "integer",
      "default": 25,
      "maximum": 100,
      "minimum": 10
    }
  },
  "additionalProperties": false
}
dynamoi_get_referrals output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_get_referrals annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_get_platform_status — Get Platform Status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants to know whether Spotify, Meta, or YouTube are connected and what setup steps still block launches. When polling after a connection-start flow, pass the returned onboardingAttemptId and onboardingFlow so Dynamoi ops can correlate the browser step. Do not use this for detailed billing questions. Never use this to personalize generic Instagram or marketing-advice questions.

dynamoi_get_platform_status input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "onboardingFlow": {
      "enum": [
        "meta",
        "youtube"
      ],
      "type": "string"
    },
    "onboardingAttemptId": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
dynamoi_get_platform_status output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "summary": {
          "type": "string"
        },
        "artistId": {
          "type": "string"
        },
        "platforms": {
          "type": "object",
          "properties": {},
          "additionalProperties": {}
        },
        "artistName": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "kind": {
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": {}
}
dynamoi_get_platform_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_list_available_countries — List Available Countries
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user asks which countries they can target for a Smart Campaign or YouTube campaign. Always pass campaignType because Smart Campaign and YouTube country catalogs are different. Do not use this for generic country marketing advice.

dynamoi_list_available_countries input schema
{
  "type": "object",
  "required": [
    "campaignType"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 100,
      "minimum": 1
    },
    "query": {
      "type": "string",
      "maxLength": 120
    },
    "cursor": {
      "type": "string"
    },
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "campaignType": {
      "enum": [
        "SMART_CAMPAIGN",
        "YOUTUBE"
      ],
      "type": "string"
    }
  },
  "additionalProperties": false
}
dynamoi_list_available_countries output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "campaignType",
            "countries",
            "notes",
            "source",
            "totalCount"
          ],
          "properties": {
            "notes": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "source": {
              "enum": [
                "SMART_CAMPAIGN_COUNTRIES",
                "GOOGLE_ADS_COUNTRIES"
              ],
              "type": "string"
            },
            "countries": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "code",
                  "googleAdsId",
                  "name"
                ],
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "googleAdsId": {
                    "type": "number"
                  },
                  "dominantLanguage": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "nextCursor": {
              "type": "string"
            },
            "totalCount": {
              "type": "number"
            },
            "campaignType": {
              "enum": [
                "SMART_CAMPAIGN",
                "YOUTUBE"
              ],
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "summary",
            "totalCount"
          ],
          "properties": {
            "summary": {
              "type": "string"
            },
            "nextCursor": {
              "type": "string"
            },
            "totalCount": {
              "type": "number"
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_list_available_countries annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_get_campaign_readiness — Get Campaign Readiness
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

dynamoi_get_campaign_readiness input schema
{
  "type": "object",
  "required": [
    "artistId",
    "campaignType"
  ],
  "properties": {
    "adCopy": {
      "type": "string",
      "maxLength": 500
    },
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "endDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Last day ads run"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "budgetType": {
      "enum": [
        "DAILY",
        "TOTAL"
      ],
      "type": "string"
    },
    "spotifyUrl": {
      "type": "string",
      "maxLength": 500,
      "minLength": 1
    },
    "contentType": {
      "enum": [
        "TRACK",
        "ALBUM",
        "PLAYLIST",
        "VIDEO"
      ],
      "type": "string"
    },
    "budgetAmount": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "campaignType": {
      "enum": [
        "SMART_CAMPAIGN",
        "YOUTUBE"
      ],
      "type": "string"
    },
    "mediaAssetIds": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      }
    },
    "youtubeEntries": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "videoId"
        ],
        "properties": {
          "videoId": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1
          },
          "playlistId": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1
          }
        },
        "additionalProperties": false
      },
      "maxItems": 10,
      "minItems": 1
    },
    "youtubeVideoId": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1
    },
    "locationTargets": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "code",
          "name"
        ],
        "properties": {
          "code": {
            "type": "string",
            "maxLength": 8,
            "minLength": 1
          },
          "name": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
          }
        },
        "additionalProperties": false
      }
    },
    "youtubeStrategy": {
      "enum": [
        "CHEAPEST_VIEWS",
        "ORGANIC_VIEWS",
        "SUBSCRIBERS",
        "ORGANIC_VIEWS_AND_SUBSCRIBERS",
        "ADSENSE_ROI"
      ],
      "type": "string",
      "description": "YouTube 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."
    },
    "youtubePlaylistId": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1
    },
    "useAiGeneratedCopy": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
dynamoi_get_campaign_readiness output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "artistId",
            "artistName",
            "blockingCodes",
            "blockingIssues",
            "budgetConstraints",
            "campaignType",
            "isReady",
            "missingInputs",
            "normalizedTargeting",
            "recommendedNextAction",
            "warnings"
          ],
          "properties": {
            "isReady": {
              "type": "boolean"
            },
            "artistId": {
              "type": "string"
            },
            "warnings": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "artistName": {
              "type": "string"
            },
            "campaignType": {
              "enum": [
                "SMART_CAMPAIGN",
                "YOUTUBE"
              ],
              "type": "string"
            },
            "blockingCodes": {
              "type": "array",
              "items": {
                "enum": [
                  "budget_policy",
                  "currency_unavailable",
                  "daily_spending_limit",
                  "funding_unavailable",
                  "invalid_end_date",
                  "onboarding",
                  "unsupported_content_type"
                ],
                "type": "string"
              }
            },
            "missingInputs": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "blockingIssues": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "fundingPreview": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "asOf",
                    "availableBalanceMinor",
                    "consentCopy",
                    "consentCopyHash",
                    "consentVersion",
                    "currency",
                    "currencyExponent",
                    "firstWindowCardMinor",
                    "firstWindowCardUpperBoundMinor",
                    "firstWindowCreditCoverageMinor",
                    "firstWindowMinor",
                    "fullFlightCardMinor",
                    "fullFlightCardUpperBoundMinor",
                    "fullFlightCreditCoverageMinor",
                    "fullFlightMinor",
                    "fundingDays",
                    "initialWindowCount",
                    "nextExpiryAt",
                    "status",
                    "windows"
                  ],
                  "properties": {
                    "asOf": {
                      "type": "string",
                      "allOf": [
                        {
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        {
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                        }
                      ]
                    },
                    "status": {
                      "enum": [
                        "known",
                        "unavailable"
                      ],
                      "type": "string"
                    },
                    "windows": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "budgetMinor",
                          "endsAt",
                          "startsAt"
                        ],
                        "properties": {
                          "endsAt": {
                            "type": "string",
                            "allOf": [
                              {
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              {
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                              }
                            ]
                          },
                          "startsAt": {
                            "type": "string",
                            "allOf": [
                              {
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              {
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                              }
                            ]
                          },
                          "budgetMinor": {
                            "type": "integer",
                            "maximum": 9007199254740991,
                            "minimum": 0
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "currency": {
                      "enum": [
                        "USD",
                        "EUR",
                        "GBP",
                        "CAD",
                        "AUD",
                        "MXN",
                        "BRL",
                        "JPY",
                        "AED",
                        "CHF",
                        "CLP",
                        "COP",
                        "CZK",
                        "DKK",
                        "EGP",
                        "HKD",
                        "HUF",
                        "IDR",
                        "ILS",
                        "INR",
                        "KRW",
                        "KZT",
                        "MYR",
                        "NGN",
                        "NOK",
                        "NZD",
                        "PEN",
                        "PHP",
                        "PKR",
                        "PLN",
                        "QAR",
                        "RON",
                        "SAR",
                        "SEK",
                        "SGD",
                        "THB",
                        "TRY",
                        "TWD",
                        "TZS",
                        "VND",
                        "ZAR",
                        "AFN",
                        "ALL",
                        "AMD",
                        "ANG",
                        "AOA",
                        "ARS",
                        "AWG",
                        "AZN",
                        "BAM",
                        "BBD",
                        "BDT",
                        "BIF",
                        "BMD",
                        "BND",
                        "BOB",
                        "BSD",
                        "BWP",
                        "BYN",
                        "BZD",
                        "CDF",
                        "CRC",
                        "CVE",
                        "DJF",
                        "DOP",
                        "DZD",
                        "ETB",
                        "FJD",
                        "FKP",
                        "GEL",
                        "GHS",
                        "GIP",
                        "GMD",
                        "GNF",
                        "GTQ",
                        "GYD",
                        "HNL",
                        "HTG",
                        "IQD",
                        "ISK",
                        "JMD",
                        "JOD",
                        "KES",
                        "KGS",
                        "KHR",
                        "KMF",
                        "KYD",
                        "LAK",
                        "LKR",
                        "LRD",
                        "LSL",
                        "MAD",
                        "MDL",
                        "MGA",
                        "MKD",
                        "MMK",
                        "MNT",
                        "MOP",
                        "MUR",
                        "MVR",
                        "MWK",
                        "MZN",
                        "NAD",
                        "NIO",
                        "NPR",
                        "PAB",
                        "PGK",
                        "PYG",
                        "RSD",
                        "RWF",
                        "SBD",
                        "SCR",
                        "SHP",
                        "SLE",
                        "SOS",
                        "SRD",
                        "STD",
                        "SZL",
                        "TJS",
                        "TOP",
                        "TTD",
                        "UAH",
                        "UGX",
                        "UYU",
                        "UZS",
                        "VUV",
                        "WST",
                        "XAF",
                        "XCD",
                        "XCG",
                        "XOF",
                        "XPF",
                        "YER",
                        "ZMW"
                      ],
                      "type": "string"
                    },
                    "consentCopy": {
                      "type": "string"
                    },
                    "fundingDays": {
                      "type": "integer",
                      "maximum": 9007199254740991,
                      "exclusiveMinimum": 0
                    },
                    "nextExpiryAt": {
                      "anyOf": [
                        {
                          "type": "string",
                          "allOf": [
                            {
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                            }
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "consentVersion": {
                      "type": "string"
                    },
                    "consentCopyHash": {
                      "type": "string"
                    },
                    "fullFlightMinor": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "maximum": 9007199254740991,
                          "minimum": 0
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "currencyExponent": {
                      "type": "integer",
                      "maximum": 3,
                      "minimum": 0
                    },
                    "firstWindowMinor": {
                      "type": "integer",
                      "maximum": 9007199254740991,
                      "minimum": 0
                    },
                    "initialWindowCount": {
                      "type": "integer",
                      "maximum": 2,
                      "minimum": 1
                    },
                    "fullFlightCardMinor": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "maximum": 9007199254740991,
                          "minimum": 0
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "firstWindowCardMinor": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "maximum": 9007199254740991,
                          "minimum": 0
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "availableBalanceMinor": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "maximum": 9007199254740991,
                          "minimum": 0
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "fullFlightCardUpperBoundMinor": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "maximum": 9007199254740991,
                          "minimum": 0
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "fullFlightCreditCoverageMinor": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "maximum": 9007199254740991,
                          "minimum": 0
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "firstWindowCardUpperBoundMinor": {
                      "type": "integer",
                      "maximum": 9007199254740991,
                      "minimum": 0
                    },
                    "firstWindowCreditCoverageMinor": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "maximum": 9007199254740991,
                          "minimum": 0
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                {
                  "type": "null"
                }
              ]
            },
            "youtubeEntries": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "videoId"
                ],
                "properties": {
                  "videoId": {
                    "type": "string"
                  },
                  "playlistId": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "budgetConstraints": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "budgetType",
                    "currency",
                    "currencyExponent",
                    "effectiveDailyBudgetMinor",
                    "maximumBudgetMinor",
                    "maximumDailyBudgetMinor",
                    "maximumTotalBudgetMinor",
                    "minimumBudgetMinor",
                    "minimumCampaignDays",
                    "minimumDailyBudgetMinor",
                    "minimumEndDate",
                    "minimumTotalBudgetMinor"
                  ],
                  "properties": {
                    "currency": {
                      "type": "string",
                      "maxLength": 3,
                      "minLength": 3
                    },
                    "budgetType": {
                      "anyOf": [
                        {
                          "enum": [
                            "DAILY",
                            "TOTAL"
                          ],
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "minimumEndDate": {
                      "type": "string",
                      "format": "date",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
                    },
                    "currencyExponent": {
                      "type": "integer",
                      "maximum": 3,
                      "minimum": 0
                    },
                    "maximumBudgetMinor": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "maximum": 9007199254740991,
                          "minimum": 0
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "minimumBudgetMinor": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "maximum": 9007199254740991,
                          "minimum": 0
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "minimumCampaignDays": {
                      "type": "integer",
                      "maximum": 9007199254740991,
                      "exclusiveMinimum": 0
                    },
                    "maximumDailyBudgetMinor": {
                      "type": "integer",
                      "maximum": 9007199254740991,
                      "minimum": 0
                    },
                    "maximumTotalBudgetMinor": {
                      "type": "integer",
                      "maximum": 9007199254740991,
                      "minimum": 0
                    },
                    "minimumDailyBudgetMinor": {
                      "type": "integer",
                      "maximum": 9007199254740991,
                      "minimum": 0
                    },
                    "minimumTotalBudgetMinor": {
                      "type": "integer",
                      "maximum": 9007199254740991,
                      "minimum": 0
                    },
                    "effectiveDailyBudgetMinor": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "maximum": 9007199254740991,
                          "minimum": 0
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                {
                  "type": "null"
                }
              ]
            },
            "proposalReadiness": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "blockers",
                    "isSubmissionReady",
                    "submissionBlockers"
                  ],
                  "properties": {
                    "blockers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "code",
                          "message"
                        ],
                        "properties": {
                          "code": {
                            "enum": [
                              "budget_policy",
                              "currency_unavailable",
                              "daily_spending_limit",
                              "funding_unavailable",
                              "invalid_end_date",
                              "onboarding",
                              "unsupported_content_type"
                            ],
                            "type": "string"
                          },
                          "field": {
                            "type": "string"
                          },
                          "message": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "isSubmissionReady": {
                      "type": "boolean"
                    },
                    "submissionBlockers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "code",
                          "message"
                        ],
                        "properties": {
                          "code": {
                            "enum": [
                              "budget_policy",
                              "currency_unavailable",
                              "daily_spending_limit",
                              "funding_unavailable",
                              "invalid_end_date",
                              "onboarding",
                              "unsupported_content_type"
                            ],
                            "type": "string"
                          },
                          "field": {
                            "type": "string"
                          },
                          "message": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": false
                },
                {
                  "type": "null"
                }
              ]
            },
            "normalizedTargeting": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "mode"
                  ],
                  "properties": {
                    "mode": {
                      "type": "string",
                      "const": "GLOBAL"
                    }
                  },
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "required": [
                    "countries",
                    "mode"
                  ],
                  "properties": {
                    "mode": {
                      "type": "string",
                      "const": "COUNTRIES"
                    },
                    "countries": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "code",
                          "name"
                        ],
                        "properties": {
                          "code": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": false
                }
              ]
            },
            "recommendedNextAction": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "summary"
          ],
          "properties": {
            "summary": {
              "type": "string"
            },
            "warnings": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "actionRequired": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_get_campaign_readiness annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
dynamoi_start_youtube_channel_link — Start YouTube Channel Link
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this when the user wants to grow a YouTube channel with Dynamoi campaigns or is ready to link a channel to one Dynamoi artist from chat. Set purpose=distribution_identity for the least-privilege identity connection required by a distribution application; that flow does not require advertising billing or Google Ads linking, and its result is checked with dynamoi_get_distribution_application. Use purpose=advertising (the default) for managed YouTube promotion, then poll dynamoi_get_platform_status until platforms.youtube.connected is true. The tool returns a Google OAuth URL bound to the signed-in user and artist.

dynamoi_start_youtube_channel_link input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "purpose": {
      "enum": [
        "advertising",
        "distribution_identity"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "userIntentSummary": {
      "type": "string",
      "maxLength": 500
    }
  },
  "additionalProperties": false
}
dynamoi_start_youtube_channel_link output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_start_youtube_channel_link annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
dynamoi_start_meta_connection — Start Meta Connection
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this when the user is ready to connect a Facebook Page and Instagram professional account to one Dynamoi artist. Set purpose=distribution_identity for the least-privilege identity connection required by a distribution application; that flow does not require advertising billing, and its result is checked with dynamoi_get_distribution_application. Use purpose=advertising (the default) for Spotify Smart Campaigns; advertising requires active billing and is checked with dynamoi_get_platform_status until platforms.meta.status is oauth_complete, partnership_pending, or partnership_active. Advertising returns billing_required when inactive and billing_check_unavailable for a transient verification failure. This returns a signed Meta OAuth URL and may include a Page/Instagram selection step.

dynamoi_start_meta_connection input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "purpose": {
      "enum": [
        "advertising",
        "distribution_identity"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "userIntentSummary": {
      "type": "string",
      "maxLength": 500
    }
  },
  "additionalProperties": false
}
dynamoi_start_meta_connection output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_start_meta_connection annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
dynamoi_smart_campaign_ad_copy — Smart Campaign Ad Copy
Advertised by the server during the last successful anonymous check.
Advertised destructive

Read ad copy for a Smart Campaign creation draft, or save copy by providing save with the revision read. Editor access required. Refuses submitted campaigns. Never launches, submits or publishes.

dynamoi_smart_campaign_ad_copy input schema
{
  "type": "object",
  "required": [
    "artistId",
    "campaignId"
  ],
  "properties": {
    "save": {
      "type": "object",
      "required": [
        "adCopy",
        "expectedUpdatedAt",
        "mode"
      ],
      "properties": {
        "mode": {
          "enum": [
            "assisted",
            "preserve"
          ],
          "type": "string"
        },
        "adCopy": {
          "type": "string"
        },
        "expectedUpdatedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
        }
      },
      "additionalProperties": false
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "campaignId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
dynamoi_smart_campaign_ad_copy output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_smart_campaign_ad_copy annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": true
}
dynamoi_manage_youtube_draft — Manage YouTube Draft
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Editor access required. Returns the current draft summary in data and the native operation response in stepResult. Read native setup with setup, browse videos with videos and optional pageToken, screen with screen and videoId. Save draft steps with save_content/contentSave={campaignId,videoId,playlistId,strategy}, save_location/locationSave={campaignId,targeting:{mode:GLOBAL}|{mode:COUNTRIES,countries:[US]}}, save_ad_copy/adCopySave={campaignId,adCopy,mode:assisted|preserve}, or save_budget/budgetSave={campaignId,budgetAmountCents,budgetType,endDate,currency?,budgetAmountMinor?}. Amounts are exact minor units in the artist currency; use the setup budget policy. Reuse the campaignId when retrying. Saves use native last-write-wins semantics; re-read setup after ambiguous outcomes. Draft saves never launch, change live campaigns or call Google Ads; launch is a separate step. Inspect a recoverable draft with inspect. Use discard only on explicit user request with campaignId, expectedUpdatedAt from inspect and userIntentSummary. Discard cannot be undone.

dynamoi_manage_youtube_draft input schema
{
  "type": "object",
  "required": [
    "action",
    "artistId"
  ],
  "properties": {
    "action": {
      "enum": [
        "inspect",
        "discard",
        "setup",
        "videos",
        "screen",
        "save_content",
        "save_location",
        "save_ad_copy",
        "save_budget"
      ],
      "type": "string"
    },
    "videoId": {
      "type": "string",
      "maxLength": 100,
      "minLength": 1
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "pageToken": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 512,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ]
    },
    "adCopySave": {
      "type": "object",
      "required": [
        "adCopy",
        "campaignId",
        "mode"
      ],
      "properties": {
        "mode": {
          "enum": [
            "assisted",
            "preserve"
          ],
          "type": "string"
        },
        "adCopy": {
          "type": "string"
        },
        "campaignId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        }
      },
      "additionalProperties": false
    },
    "budgetSave": {
      "type": "object",
      "required": [
        "budgetAmountCents",
        "budgetType",
        "campaignId",
        "endDate"
      ],
      "properties": {
        "endDate": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                }
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "currency": {
          "type": "string",
          "maxLength": 3,
          "minLength": 3
        },
        "budgetType": {
          "enum": [
            "DAILY",
            "TOTAL"
          ],
          "type": "string"
        },
        "campaignId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "budgetAmountCents": {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        },
        "budgetAmountMinor": {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        }
      },
      "additionalProperties": false
    },
    "campaignId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "contentSave": {
      "type": "object",
      "required": [
        "campaignId",
        "strategy",
        "videoId"
      ],
      "properties": {
        "videoId": {
          "type": "string",
          "maxLength": 100,
          "minLength": 1
        },
        "strategy": {
          "enum": [
            "CHEAPEST_VIEWS",
            "ORGANIC_VIEWS",
            "SUBSCRIBERS",
            "ORGANIC_VIEWS_AND_SUBSCRIBERS",
            "ADSENSE_ROI"
          ],
          "type": "string",
          "description": "YouTube 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."
        },
        "campaignId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "playlistId": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 128,
              "minLength": 1
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "locationSave": {
      "type": "object",
      "required": [
        "campaignId",
        "targeting"
      ],
      "properties": {
        "targeting": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "mode"
              ],
              "properties": {
                "mode": {
                  "type": "string",
                  "const": "GLOBAL"
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "required": [
                "countries",
                "mode"
              ],
              "properties": {
                "mode": {
                  "type": "string",
                  "const": "COUNTRIES"
                },
                "countries": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "maxLength": 2,
                    "minLength": 2
                  },
                  "maxItems": 250,
                  "minItems": 1
                }
              },
              "additionalProperties": false
            }
          ]
        },
        "campaignId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        }
      },
      "additionalProperties": false
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "userIntentSummary": {
      "type": "string",
      "maxLength": 500
    }
  },
  "additionalProperties": false
}
dynamoi_manage_youtube_draft output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "artistId",
            "draft",
            "failureStage",
            "updatedAt"
          ],
          "properties": {
            "draft": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "campaignId",
                    "completedSteps",
                    "content"
                  ],
                  "properties": {
                    "content": {
                      "type": "object",
                      "required": [
                        "screening"
                      ],
                      "properties": {
                        "screening": {
                          "anyOf": [
                            {
                              "type": "object",
                              "required": [
                                "status"
                              ],
                              "properties": {
                                "status": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": {}
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "additionalProperties": {}
                    },
                    "campaignId": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                    },
                    "completedSteps": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "additionalProperties": {}
                },
                {
                  "type": "null"
                }
              ]
            },
            "artistId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "updatedAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "failureStage": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "artistId",
            "campaignId",
            "discarded"
          ],
          "properties": {
            "artistId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "discarded": {
              "type": "boolean",
              "const": true
            },
            "campaignId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "stepResult": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_manage_youtube_draft annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "destructiveHint": true
}
dynamoi_list_media_assets — List Media Assets
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants to choose from uploaded images or videos that can be reused in a campaign launch. Do not use this when the user only wants campaign status or analytics. Use format=json when you need asset IDs for a follow-up launch. Request includeUrls only when the assistant must display or inspect public-safe asset URLs.

dynamoi_list_media_assets input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1
    },
    "cursor": {
      "type": "string"
    },
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "includeUrls": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
dynamoi_list_media_assets output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "assets"
          ],
          "properties": {
            "assets": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "createdAt",
                  "fileType",
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "url": {
                    "type": "string"
                  },
                  "width": {
                    "type": "number"
                  },
                  "height": {
                    "type": "number"
                  },
                  "fileName": {
                    "type": "string"
                  },
                  "fileType": {
                    "type": "string"
                  },
                  "createdAt": {
                    "type": "string"
                  },
                  "moderation": {
                    "type": "object",
                    "required": [
                      "assetId",
                      "attemptCount",
                      "errorCode",
                      "errorMessage",
                      "fileType",
                      "provider",
                      "reasonCodes",
                      "riskLevel",
                      "scannedAt",
                      "status",
                      "summary",
                      "verdict"
                    ],
                    "properties": {
                      "status": {
                        "enum": [
                          "NOT_REQUIRED",
                          "PENDING",
                          "SCANNING",
                          "APPROVED",
                          "NEEDS_REVIEW",
                          "BLOCKED",
                          "SCAN_FAILED",
                          "PROVIDER_UNAVAILABLE"
                        ],
                        "type": "string"
                      },
                      "assetId": {
                        "type": "string"
                      },
                      "summary": {
                        "anyOf": [
                          {
                            "type": "object",
                            "propertyNames": {
                              "type": "string"
                            },
                            "additionalProperties": {}
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "verdict": {
                        "anyOf": [
                          {
                            "enum": [
                              "APPROVED",
                              "NEEDS_REVIEW",
                              "BLOCKED"
                            ],
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "fileType": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "provider": {
                        "anyOf": [
                          {
                            "enum": [
                              "GOOGLE_VISION_SAFESEARCH",
                              "GOOGLE_VIDEO_INTELLIGENCE_EXPLICIT",
                              "MANUAL_ADMIN",
                              "SPECIALIST_HASH_PROVIDER"
                            ],
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "errorCode": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "riskLevel": {
                        "anyOf": [
                          {
                            "enum": [
                              "NONE",
                              "LOW",
                              "MEDIUM",
                              "HIGH",
                              "SEVERE"
                            ],
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "scannedAt": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "reasonCodes": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "attemptCount": {
                        "type": "integer",
                        "maximum": 9007199254740991,
                        "minimum": 0
                      },
                      "errorMessage": {
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    },
                    "additionalProperties": false
                  },
                  "aspectRatio": {
                    "type": "string"
                  },
                  "thumbnailUrl": {
                    "type": "string"
                  },
                  "urlExpiresAt": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "nextCursor": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "summary",
            "totalCount"
          ],
          "properties": {
            "summary": {
              "type": "string"
            },
            "nextCursor": {
              "type": "string"
            },
            "totalCount": {
              "type": "number"
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_list_media_assets annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_manage_smart_campaign_creative — Manage Smart Campaign Draft Creative
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use save_setup with setupSave={playLinkId, appleMusicUrl?} and a stable UUID-v4 setupRequestId per setup flow; reuse it on retries, and start a new flow for different content. It returns setupDraft. Use read_budget for budgetDraft and save_budget with budgetSave={campaignId, expectedUpdatedAt, budgetAmountCents, budgetAmountMinor?, currency?, budgetType:DAILY|TOTAL, endDate:YYYY-MM-DD|null}. Amounts are exact minor units in the artist currency; use the budget policy from read_budget. Setup and budget saves only edit drafts and never launch or charge. Use read_location to read native draft targeting and save_location with locationSave={campaignId, expectedUpdatedAt, targeting:{mode:WORLDWIDE}|{mode:INCLUDE,countryCodes:[US]}} to save it. Read locationDraft first for the current revision; both location actions return locationDraft. Read generation progress, generated creatives and current selection with action=read. To discover owned social posts, explicitly add catalog={source:facebook|instagram,limit:1..25,after?:nextCursor}. Only requested catalog reads fetch connected-account posts; use catalog.items[].id directly in selectedSocialPosts. Pass nextCursor as after for another page. Catalog reads never alter selections, token state, or campaigns; provider failure is an error, and selection revalidates ownership. Use start_generation, retry_generation or clear_generation with campaignId and expectedUpdatedAt from read. Generation runs asynchronously; poll with read. Use source_audio_upload_status or abort_source_audio_upload with campaignId, expectedUpdatedAt, uploadId and uploadSessionId to inspect uploaded parts or abort the direct upload. Agents never approve or submit. Use action=select with campaignId and expectedUpdatedAt from read, source=generate|posts|upload, and selectedCreativeIds, selectedSocialPosts (owned META:post IDs), or uploadedAssets=[{mediaAssetId}] from dynamoi_list_media_assets. Omit selectedCreativeIds for social or uploaded media. Uploaded metadata is resolved by the server; only owned, moderation-approved uploads can be selected. Selection never attests artist approval and never submits the campaign. Upload private JPEG/PNG/MP4 campaign media (1 GiB maximum) with start_media_upload, campaignId, expectedUpdatedAt and mediaUpload={assetId:UUID,fileName,fileSizeBytes,contentType}. Retain the returned key/uploadId and PUT each presigned part URL. Complete with complete_media_upload, a freshly inspected expectedUpdatedAt, and mediaUpload={assetId,fileName,fileSizeBytes,fileType,key,uploadId,parts:[{partNumber,etag}]}. Use media_upload_status or abort_media_upload with campaignId and mediaUpload={key,uploadId}; both remain usable after draft edits. A completed status means retry completion, not re-upload. Completion returns only a moderation receipt; poll dynamoi_list_media_assets and select only after APPROVED. Uploads do not edit the draft selection. Attach source MP3 audio to a draft with start_source_audio_upload, PUT each returned presigned part URL, then complete_source_audio_upload with the returned uploadId/uploadSessionId and part ETags. Both actions require campaignId, expectedUpdatedAt, fileSizeBytes, trackDurationSeconds and 0–2 hookSeconds. Read sourceAudio to confirm. Use import_source_audio with a public Dropbox share url, campaignId, expectedUpdatedAt, trackDurationSeconds and 0–2 hookSeconds (250 MiB maximum). Google Drive is unsupported because it requires a Google API key. On timeout or an ambiguous result, re-read sourceAudio before retrying.

dynamoi_manage_smart_campaign_creative input schema
{
  "type": "object",
  "required": [
    "action",
    "artistId"
  ],
  "properties": {
    "url": {
      "type": "string",
      "maxLength": 8192
    },
    "parts": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "etag",
          "partNumber"
        ],
        "properties": {
          "etag": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1
          },
          "partNumber": {
            "type": "integer",
            "maximum": 10000,
            "minimum": 1
          }
        },
        "additionalProperties": false
      },
      "maxItems": 10000,
      "minItems": 1
    },
    "action": {
      "enum": [
        "save_setup",
        "read_budget",
        "save_budget",
        "read",
        "read_location",
        "save_location",
        "start_generation",
        "retry_generation",
        "clear_generation",
        "source_audio_upload_status",
        "abort_source_audio_upload",
        "select",
        "import_source_audio",
        "start_source_audio_upload",
        "complete_source_audio_upload",
        "start_media_upload",
        "media_upload_status",
        "complete_media_upload",
        "abort_media_upload"
      ],
      "type": "string"
    },
    "source": {
      "enum": [
        "generate",
        "posts",
        "upload"
      ],
      "type": "string"
    },
    "catalog": {
      "type": "object",
      "required": [
        "source"
      ],
      "properties": {
        "after": {
          "type": "string",
          "maxLength": 2048,
          "minLength": 1
        },
        "limit": {
          "type": "integer",
          "default": 10,
          "maximum": 25,
          "minimum": 1
        },
        "source": {
          "enum": [
            "facebook",
            "instagram"
          ],
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "uploadId": {
      "type": "string",
      "maxLength": 2048,
      "minLength": 1
    },
    "setupSave": {
      "type": "object",
      "required": [
        "playLinkId"
      ],
      "properties": {
        "playLinkId": {
          "type": "string",
          "minLength": 1
        },
        "appleMusicUrl": {
          "type": [
            "string",
            "null"
          ]
        },
        "sourceSurface": {
          "type": "string",
          "const": "mcp",
          "default": "mcp"
        }
      },
      "additionalProperties": false
    },
    "budgetSave": {
      "type": "object",
      "required": [
        "campaignId",
        "expectedUpdatedAt",
        "budgetAmountCents",
        "budgetType",
        "endDate"
      ],
      "properties": {
        "endDate": {
          "anyOf": [
            {
              "type": "string",
              "format": "date",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
            },
            {
              "type": "null"
            }
          ]
        },
        "currency": {
          "type": "string",
          "maxLength": 3,
          "minLength": 3
        },
        "budgetType": {
          "enum": [
            "DAILY",
            "TOTAL"
          ],
          "type": "string"
        },
        "campaignId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "budgetAmountCents": {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        },
        "budgetAmountMinor": {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        },
        "expectedUpdatedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
        }
      },
      "additionalProperties": false
    },
    "campaignId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "hookSeconds": {
      "type": "array",
      "items": {
        "type": "integer",
        "maximum": 9007199254740991,
        "minimum": 0
      },
      "maxItems": 2
    },
    "mediaUpload": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string",
          "maxLength": 2048,
          "minLength": 1
        },
        "parts": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "etag",
              "partNumber"
            ],
            "properties": {
              "etag": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              "partNumber": {
                "type": "integer",
                "maximum": 10000,
                "minimum": 1
              }
            },
            "additionalProperties": false
          },
          "maxItems": 10000,
          "minItems": 1
        },
        "assetId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "fileName": {
          "type": "string",
          "maxLength": 512,
          "minLength": 1
        },
        "fileType": {
          "enum": [
            "image/jpeg",
            "image/png",
            "video/mp4"
          ],
          "type": "string"
        },
        "uploadId": {
          "type": "string",
          "maxLength": 2048,
          "minLength": 1
        },
        "contentType": {
          "enum": [
            "image/jpeg",
            "image/png",
            "video/mp4"
          ],
          "type": "string"
        },
        "fileSizeBytes": {
          "type": "integer",
          "maximum": 1073741824,
          "exclusiveMinimum": 0
        }
      },
      "additionalProperties": false
    },
    "locationSave": {
      "type": "object",
      "required": [
        "campaignId",
        "expectedUpdatedAt",
        "targeting"
      ],
      "properties": {
        "targeting": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "mode"
              ],
              "properties": {
                "mode": {
                  "type": "string",
                  "const": "WORLDWIDE"
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "required": [
                "countryCodes",
                "mode"
              ],
              "properties": {
                "mode": {
                  "type": "string",
                  "const": "INCLUDE"
                },
                "countryCodes": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "maxLength": 2,
                    "minLength": 2
                  },
                  "maxItems": 250,
                  "minItems": 1
                }
              },
              "additionalProperties": false
            }
          ]
        },
        "campaignId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "expectedUpdatedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
        }
      },
      "additionalProperties": false
    },
    "fileSizeBytes": {
      "type": "integer",
      "maximum": 262144000,
      "exclusiveMinimum": 0
    },
    "setupRequestId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$"
    },
    "uploadedAssets": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "mediaAssetId"
        ],
        "properties": {
          "id": {
            "type": "string",
            "default": ""
          },
          "fileName": {
            "type": "string",
            "default": ""
          },
          "fileSize": {
            "type": "integer",
            "default": 0,
            "maximum": 9007199254740991,
            "minimum": 0
          },
          "fileType": {
            "type": "string",
            "default": ""
          },
          "mediaAssetId": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          }
        },
        "additionalProperties": false
      },
      "maxItems": 10
    },
    "uploadSessionId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "selectedCreativeIds": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      },
      "maxItems": 10,
      "minItems": 1
    },
    "selectedSocialPosts": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200,
        "minLength": 1
      },
      "maxItems": 10
    },
    "trackDurationSeconds": {
      "type": "number",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_manage_smart_campaign_creative output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "required": [
        "campaignId",
        "generation",
        "selectedCreativeIds",
        "updatedAt"
      ],
      "properties": {
        "source": {
          "anyOf": [
            {
              "enum": [
                "generate",
                "posts",
                "upload"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "upload": {
          "type": "object",
          "required": [
            "campaignId",
            "expiresAt",
            "partSizeBytes",
            "presignedPartUrls",
            "uploadId",
            "uploadSessionId"
          ],
          "properties": {
            "uploadId": {
              "type": "string"
            },
            "expiresAt": {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
            },
            "campaignId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "partSizeBytes": {
              "type": "number"
            },
            "uploadSessionId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "presignedPartUrls": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "additionalProperties": false
        },
        "catalog": {
          "type": "object",
          "required": [
            "items",
            "nextCursor",
            "source"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "createdAt",
                  "eligibleForPromotion",
                  "id",
                  "mediaType",
                  "text"
                ],
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "text": {
                    "type": "string",
                    "maxLength": 2000
                  },
                  "createdAt": {
                    "type": "string"
                  },
                  "mediaType": {
                    "type": "string"
                  },
                  "eligibleForPromotion": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  }
                },
                "additionalProperties": false
              },
              "maxItems": 25
            },
            "source": {
              "enum": [
                "facebook",
                "instagram"
              ],
              "type": "string"
            },
            "nextCursor": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "additionalProperties": false
        },
        "updatedAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
            },
            {
              "type": "null"
            }
          ]
        },
        "campaignId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "draftState": {
          "enum": [
            "available",
            "missing"
          ],
          "type": "string"
        },
        "generation": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "items",
                "jobId",
                "phase"
              ],
              "properties": {
                "items": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "clipDurationSeconds",
                      "clipStartSeconds",
                      "errorMessage",
                      "id",
                      "progressPercent",
                      "status",
                      "templateVariant",
                      "thumbnailUrl",
                      "videoUrl"
                    ],
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                      },
                      "status": {
                        "enum": [
                          "COMPLETED",
                          "FAILED",
                          "PENDING",
                          "PROCESSING"
                        ],
                        "type": "string"
                      },
                      "videoUrl": {
                        "type": "string",
                        "maxLength": 8192
                      },
                      "errorMessage": {
                        "anyOf": [
                          {
                            "type": "string",
                            "maxLength": 2000
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "thumbnailUrl": {
                        "type": "string",
                        "maxLength": 8192
                      },
                      "progressPercent": {
                        "anyOf": [
                          {
                            "type": "number",
                            "maximum": 100,
                            "minimum": 0
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "templateVariant": {
                        "type": "string",
                        "maxLength": 100
                      },
                      "clipStartSeconds": {
                        "type": "number",
                        "minimum": 0
                      },
                      "clipDurationSeconds": {
                        "type": "number",
                        "minimum": 0
                      }
                    },
                    "additionalProperties": false
                  },
                  "maxItems": 100
                },
                "jobId": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                },
                "phase": {
                  "enum": [
                    "ANALYZING_AUDIO",
                    "CHECKING_RENDERER",
                    "FAILED",
                    "FINALIZING",
                    "PREPARING_TEMPLATES",
                    "RENDERING"
                  ],
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "setupDraft": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "budgetDraft": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "mediaUpload": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "expiresAt",
                "key",
                "partSizeBytes",
                "presignedPartUrls",
                "uploadId"
              ],
              "properties": {
                "key": {
                  "type": "string"
                },
                "uploadId": {
                  "type": "string"
                },
                "expiresAt": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                },
                "partSizeBytes": {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "exclusiveMinimum": 0
                },
                "presignedPartUrls": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uri"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "required": [
                "completed",
                "uploadedParts"
              ],
              "properties": {
                "completed": {
                  "type": "boolean"
                },
                "uploadedParts": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "etag",
                      "partNumber",
                      "sizeBytes"
                    ],
                    "properties": {
                      "etag": {
                        "type": "string"
                      },
                      "sizeBytes": {
                        "type": "integer",
                        "maximum": 9007199254740991,
                        "minimum": 0
                      },
                      "partNumber": {
                        "type": "integer",
                        "maximum": 9007199254740991,
                        "exclusiveMinimum": 0
                      }
                    },
                    "additionalProperties": false
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "required": [
                "etag",
                "key",
                "mediaAssetId",
                "moderationStatus"
              ],
              "properties": {
                "key": {
                  "type": "string"
                },
                "etag": {
                  "type": "string"
                },
                "mediaAssetId": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                },
                "moderationStatus": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "required": [
                "ok"
              ],
              "properties": {
                "ok": {
                  "type": "boolean",
                  "const": true
                }
              },
              "additionalProperties": false
            }
          ]
        },
        "sourceAudio": {
          "type": "object",
          "required": [
            "fileName",
            "fileSizeBytes",
            "hookSeconds",
            "isUploaded",
            "trackDurationSeconds"
          ],
          "properties": {
            "fileName": {
              "type": [
                "string",
                "null"
              ]
            },
            "isUploaded": {
              "type": "boolean"
            },
            "hookSeconds": {
              "type": "array",
              "items": {
                "type": "number"
              }
            },
            "fileSizeBytes": {
              "type": [
                "number",
                "null"
              ]
            },
            "trackDurationSeconds": {
              "type": [
                "number",
                "null"
              ]
            }
          },
          "additionalProperties": false
        },
        "uploadStatus": {
          "type": "object",
          "required": [
            "campaignId",
            "uploadedParts"
          ],
          "properties": {
            "campaignId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "uploadedParts": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "etag",
                  "partNumber",
                  "sizeBytes"
                ],
                "properties": {
                  "etag": {
                    "type": "string",
                    "minLength": 1
                  },
                  "sizeBytes": {
                    "type": "integer",
                    "maximum": 9007199254740991,
                    "minimum": 0
                  },
                  "partNumber": {
                    "type": "integer",
                    "maximum": 9007199254740991,
                    "exclusiveMinimum": 0
                  }
                },
                "additionalProperties": false
              }
            }
          },
          "additionalProperties": false
        },
        "locationDraft": {
          "type": "object",
          "required": [
            "activeStep",
            "campaignId",
            "location",
            "updatedAt"
          ],
          "properties": {
            "location": {
              "type": "object",
              "required": [
                "countries",
                "mode"
              ],
              "properties": {
                "mode": {
                  "enum": [
                    "WORLDWIDE",
                    "INCLUDE"
                  ],
                  "type": "string"
                },
                "countries": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "code",
                      "name"
                    ],
                    "properties": {
                      "code": {
                        "type": "string",
                        "maxLength": 2,
                        "minLength": 2
                      },
                      "name": {
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "additionalProperties": false
                  }
                }
              },
              "additionalProperties": false
            },
            "updatedAt": {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
            },
            "activeStep": {
              "enum": [
                "location",
                "adCopy"
              ],
              "type": "string"
            },
            "campaignId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "completedSteps": {
              "type": "array",
              "items": false,
              "maxItems": 3,
              "minItems": 3,
              "prefixItems": [
                {
                  "type": "string",
                  "const": "content"
                },
                {
                  "type": "string",
                  "const": "creative"
                },
                {
                  "type": "string",
                  "const": "location"
                }
              ]
            },
            "availableCountries": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "code",
                  "name"
                ],
                "properties": {
                  "code": {
                    "type": "string",
                    "maxLength": 2,
                    "minLength": 2
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "additionalProperties": false
              }
            },
            "recommendedCountries": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "code",
                  "name"
                ],
                "properties": {
                  "code": {
                    "type": "string",
                    "maxLength": 2,
                    "minLength": 2
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "additionalProperties": false
              }
            }
          },
          "additionalProperties": false
        },
        "uploadedAssets": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "fileName",
              "fileSize",
              "fileType",
              "id",
              "mediaAssetId",
              "uploadStatus"
            ],
            "properties": {
              "id": {
                "type": "string",
                "default": ""
              },
              "fileName": {
                "type": "string",
                "default": ""
              },
              "fileSize": {
                "type": "integer",
                "default": 0,
                "maximum": 9007199254740991,
                "minimum": 0
              },
              "fileType": {
                "type": "string",
                "default": ""
              },
              "mediaAssetId": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "uploadStatus": {
                "enum": [
                  "success",
                  "error"
                ],
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "generationJobId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "selectedCreativeIds": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "maxItems": 100
        },
        "selectedSocialPosts": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_manage_smart_campaign_creative annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "destructiveHint": true
}
dynamoi_prepare_distribution_release — Prepare Release Handoff
Advertised by the server during the last successful anonymous check.
Advertised destructive

Prepare metadata, tracks and proposed splits for artist review in a private expiring web form. Does not submit a release, attest rights, accept agreements or invite collaborators.

dynamoi_prepare_distribution_release input schema
{
  "type": "object",
  "required": [
    "artistId",
    "desiredReleaseDate",
    "hasCollaborators",
    "labelName",
    "notes",
    "releaseTitle",
    "releaseType",
    "splits",
    "tracks"
  ],
  "properties": {
    "notes": {
      "type": [
        "string",
        "null"
      ]
    },
    "splits": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "payeeEmail",
          "payeeName",
          "payeeRole",
          "sharePercent"
        ],
        "properties": {
          "payeeName": {
            "type": "string"
          },
          "payeeRole": {
            "type": [
              "string",
              "null"
            ]
          },
          "payeeEmail": {
            "type": "string"
          },
          "sharePercent": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "tracks": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "isrc",
          "title",
          "trackNumber",
          "versionTitle"
        ],
        "properties": {
          "isrc": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": "string"
          },
          "trackNumber": {
            "type": "number"
          },
          "versionTitle": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "labelName": {
      "type": [
        "string",
        "null"
      ]
    },
    "releaseType": {
      "type": "string"
    },
    "releaseTitle": {
      "type": "string"
    },
    "hasCollaborators": {
      "type": "boolean"
    },
    "desiredReleaseDate": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
dynamoi_prepare_distribution_release output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_prepare_distribution_release annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": true
}
dynamoi_get_distribution_status — Read Distribution Status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read native foundation, application, agreement, catalog or release status for an accessible artist through the same owners as web/mobile. Release intake status requires editor access, as on web; catalog retains viewer scoping. Catalog is a status overview; releases returns the latest 20 submissions, not complete history. Rights and agreement attestation and sending releases to stores are done by the artist in web or the app.

dynamoi_get_distribution_status input schema
{
  "type": "object",
  "required": [
    "artistId",
    "section"
  ],
  "properties": {
    "section": {
      "enum": [
        "application",
        "agreement",
        "catalog",
        "releases",
        "foundation"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
dynamoi_get_distribution_status output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_get_distribution_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_get_distribution_application — Check Distribution Application
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this for "get my music on Spotify" or "distribute my song": Dynamoi distributes to 100+ stores and artists keep 90% of net receipts. Use this when the user asks whether an artist qualifies for Dynamoi music distribution, wants the five application requirements, or wants the status of an existing distribution application. It checks Spotify connection, at least 1,000 Spotify followers, at least 10,000 verified monthly listeners, connected Facebook Page plus Instagram professional identity, and a connected YouTube channel. Meeting all five requirements permits an application but never guarantees approval. When the connection tools are available, use purpose=distribution_identity for missing Meta or YouTube identity; otherwise tell the user: 'You can do this in the Dynamoi dashboard at https://dynamoi.com/dashboard.' Identity connections do not require advertising billing.

dynamoi_get_distribution_application input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
dynamoi_get_distribution_application output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_get_distribution_application annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_apply_for_distribution — Apply for Music Distribution
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Submit an artist's application for Dynamoi music distribution after the user explicitly asks to apply and all five eligibility requirements are met. This records an application for manual review; it does not approve distribution, accept an agreement, submit a release, transfer rights, configure splits or tax forms, or deliver music to stores. All three valid ISO 3166-1 alpha-2 country or territory codes, an adult signer attestation, confirmApplicationSubmission=true, and a concise userIntentSummary are required. Country, tax, payout, sanctions, and provider-delivery checks remain manual progression gates after intake; a valid code does not imply approval. Repeated submission is idempotent for an active application.

dynamoi_apply_for_distribution input schema
{
  "type": "object",
  "required": [
    "adultSignerAttestation",
    "applicantCountry",
    "artistId",
    "confirmApplicationSubmission",
    "payoutCountry",
    "taxResidencyCountry",
    "userIntentSummary"
  ],
  "properties": {
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "payoutCountry": {
      "type": "string",
      "maxLength": 2,
      "minLength": 2
    },
    "applicantCountry": {
      "type": "string",
      "maxLength": 2,
      "minLength": 2
    },
    "userIntentSummary": {
      "type": "string",
      "maxLength": 500,
      "minLength": 1
    },
    "taxResidencyCountry": {
      "type": "string",
      "maxLength": 2,
      "minLength": 2
    },
    "adultSignerAttestation": {
      "type": "boolean",
      "const": true
    },
    "confirmApplicationSubmission": {
      "type": "boolean",
      "const": true
    }
  },
  "additionalProperties": false
}
dynamoi_apply_for_distribution output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_apply_for_distribution annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
dynamoi_contact_support — Contact Dynamoi Support
Advertised by the server during the last successful anonymous check.
Advertised destructive

Use this when the user wants to report a problem with Dynamoi (a tool error, sign-in or permission problem, wrong data, a billing, campaign or distribution question) or send Dynamoi feedback. Show the user the subject and message and get their OK before sending. Dynamoi attaches the signed-in account and this agent's identity, and support replies by email to the account address. Never include passwords, tokens, API keys or card numbers. Sending changes no campaign, billing or account data.

dynamoi_contact_support input schema
{
  "type": "object",
  "required": [
    "category",
    "message",
    "subject"
  ],
  "properties": {
    "message": {
      "type": "string",
      "maxLength": 4000,
      "minLength": 10
    },
    "subject": {
      "type": "string",
      "maxLength": 150,
      "minLength": 3
    },
    "category": {
      "enum": [
        "sign_in",
        "tool_error",
        "billing",
        "campaign",
        "distribution",
        "smart_links",
        "feedback",
        "other"
      ],
      "type": "string"
    },
    "requestId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Reuse this ID when retrying the same request; use a new ID for a new request."
    },
    "failedTool": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9_]{0,63}$"
    },
    "errorMessage": {
      "type": "string",
      "maxLength": 1000
    }
  },
  "additionalProperties": false
}
dynamoi_contact_support output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "required": [
        "kind",
        "reference",
        "replyChannel",
        "status"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "const": "support_request"
        },
        "status": {
          "type": "string",
          "const": "received"
        },
        "reference": {
          "type": "string",
          "minLength": 1
        },
        "replyChannel": {
          "type": "string",
          "const": "account_email"
        }
      },
      "additionalProperties": false
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_contact_support annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
dynamoi_preview_smart_link_themes — Preview Smart Link Themes
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user asks what Dynamoi Smart Link pages can look like, wants to compare Smart Link themes, or asks to preview the available themes before creating or updating a free Smart Link. This is a read-only visual preview and does not create, publish, update, or promote a Smart Link.

dynamoi_preview_smart_link_themes input schema
{
  "type": "object",
  "properties": {
    "artistName": {
      "type": "string",
      "maxLength": 80,
      "minLength": 1
    },
    "releaseTitle": {
      "type": "string",
      "maxLength": 80,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
dynamoi_preview_smart_link_themes output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "required": [
        "artistName",
        "releaseTitle",
        "themes"
      ],
      "properties": {
        "themes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "summary": {
                "type": "string"
              },
              "publicUrl": {
                "type": "string"
              }
            },
            "additionalProperties": {}
          }
        },
        "artistName": {
          "type": "string"
        },
        "releaseTitle": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "kind": {
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": {}
}
dynamoi_preview_smart_link_themes annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_create_smart_link_from_spotify — Create Free Smart Link from Spotify
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this for "make a link for my song" or a release or link-in-bio page for a new single. Use this when the user wants to create one free Dynamoi Smart Link from a Spotify album or track URL/URI, or a single starter release from a Spotify artist URL. For full-catalog artist imports or artist hub requests, prefer dynamoi_create_smart_links_from_spotify_artist. Smart Links are free to create and manage. High-popularity or unverifiable artist links may stay unpublished in verification hold until Dynamoi can verify the client relationship. This does not create a paid ad campaign. Spotify playlist URLs are not supported today. This is also how to add a release missing from an artist's imported catalog: the user pastes that release's exact Spotify album, single, or EP URL. If the Smart Link already exists, return the existing link instead of creating a duplicate; if customDescription is provided, update that Smart Link's public description. In the final answer, lead with the public URL and do not expose internal IDs unless asked.

dynamoi_create_smart_link_from_spotify input schema
{
  "type": "object",
  "required": [
    "artistId",
    "spotifyUrl"
  ],
  "properties": {
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "spotifyUrl": {
      "type": "string",
      "maxLength": 500,
      "minLength": 1
    },
    "clientRequestId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "customDescription": {
      "type": "string",
      "maxLength": 500
    },
    "userIntentSummary": {
      "type": "string",
      "maxLength": 500
    }
  },
  "additionalProperties": false
}
dynamoi_create_smart_link_from_spotify output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "required": [
        "artistHubUrl",
        "artistId",
        "artistName",
        "claimStatus",
        "createdAt",
        "id",
        "isPublic",
        "publicUrl",
        "publishState",
        "releaseSlug",
        "releaseTitle",
        "releaseType",
        "renderState",
        "spotifyUrl",
        "takedownStatus",
        "theme",
        "updatedAt",
        "customDescription",
        "nextActions",
        "originalSpotifyUrl",
        "summary",
        "outcome",
        "workflowWarning"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "theme": {
          "enum": [
            "classic",
            "brutalist",
            "aurora",
            "cinematic"
          ],
          "type": "string"
        },
        "outcome": {
          "enum": [
            "created",
            "existing"
          ],
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "artistId": {
          "type": "string"
        },
        "isPublic": {
          "type": "boolean"
        },
        "warnings": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "createdAt": {
          "type": "string"
        },
        "publicUrl": {
          "type": "string"
        },
        "updatedAt": {
          "type": "string"
        },
        "artistName": {
          "type": "string"
        },
        "spotifyUrl": {
          "type": [
            "string",
            "null"
          ]
        },
        "claimStatus": {
          "enum": [
            "auto_approved",
            "pending_ops_review",
            "verification_deferred",
            "approved_by_ops",
            "rejected"
          ],
          "type": "string"
        },
        "nextActions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "releaseSlug": {
          "type": "string"
        },
        "releaseType": {
          "type": "string"
        },
        "renderState": {
          "enum": [
            "queued",
            "rendering",
            "rendered",
            "failed"
          ],
          "type": "string"
        },
        "artistHubUrl": {
          "type": "string"
        },
        "publishState": {
          "enum": [
            "published",
            "unpublished"
          ],
          "type": "string"
        },
        "releaseTitle": {
          "type": "string"
        },
        "actionRequired": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "takedownStatus": {
          "enum": [
            "none",
            "active",
            "resolved"
          ],
          "type": "string"
        },
        "workflowWarning": {
          "type": [
            "string",
            "null"
          ]
        },
        "customDescription": {
          "type": [
            "string",
            "null"
          ]
        },
        "originalSpotifyUrl": {
          "type": [
            "string",
            "null"
          ]
        },
        "localizedPublicUrls": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_create_smart_link_from_spotify annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
dynamoi_create_smart_links_from_spotify_artist — Create Free Smart Links for Spotify Artist
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Preview at most 25 Spotify album/single Smart Links, then show the exact count, titles and existing/new counts to the user. Creation requires a separate confirmed call with phase=confirm, the returned previewId and confirmedCount matching count. Preview creates no artist or Smart Links. Omit artistId to create the first artist only after confirmation. The target list is frozen; one confirmation never starts an unbounded catalog job. A nextOffset requires a new preview and confirmation. Replays return the same result; an in-progress/ambiguous result never starts another write. Smart Links are free and may remain in verification hold. Lead with public URLs; this does not create a paid campaign.

dynamoi_create_smart_links_from_spotify_artist input schema
{
  "type": "object",
  "required": [
    "spotifyArtistUrl"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 25,
      "maximum": 25,
      "minimum": 1
    },
    "phase": {
      "enum": [
        "preview",
        "confirm"
      ],
      "type": "string",
      "default": "preview"
    },
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "maximum": 10000,
      "minimum": 0
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "previewId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "confirmedCount": {
      "type": "integer",
      "maximum": 25,
      "minimum": 0
    },
    "clientRequestId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "spotifyArtistUrl": {
      "type": "string",
      "maxLength": 500,
      "minLength": 1
    },
    "userIntentSummary": {
      "type": "string",
      "maxLength": 500
    }
  },
  "additionalProperties": false
}
dynamoi_create_smart_links_from_spotify_artist output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "required": [
        "artistId",
        "count",
        "existingCount",
        "expiresAt",
        "items",
        "message",
        "newCount",
        "nextOffset",
        "previewId",
        "spotifyArtistUrl",
        "status",
        "targets"
      ],
      "properties": {
        "count": {
          "type": "integer",
          "maximum": 25,
          "minimum": 0
        },
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "message",
              "playLinkId",
              "publicUrl",
              "spotifyUrl",
              "status"
            ],
            "properties": {
              "status": {
                "enum": [
                  "created",
                  "existing",
                  "failed"
                ],
                "type": "string"
              },
              "message": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "publicUrl": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uri"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "playLinkId": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "spotifyUrl": {
                "type": "string",
                "format": "uri"
              }
            },
            "additionalProperties": false
          },
          "maxItems": 25
        },
        "status": {
          "enum": [
            "preview",
            "completed",
            "in_progress",
            "failed"
          ],
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "existing",
              "releaseName",
              "spotifyUrl"
            ],
            "properties": {
              "existing": {
                "type": "boolean"
              },
              "spotifyUrl": {
                "type": "string",
                "format": "uri"
              },
              "releaseName": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "maxItems": 25
        },
        "artistId": {
          "type": [
            "string",
            "null"
          ]
        },
        "newCount": {
          "type": "integer",
          "maximum": 25,
          "minimum": 0
        },
        "expiresAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
        },
        "previewId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "nextOffset": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": 0
            },
            {
              "type": "null"
            }
          ]
        },
        "existingCount": {
          "type": "integer",
          "maximum": 25,
          "minimum": 0
        },
        "spotifyArtistUrl": {
          "type": "string",
          "format": "uri"
        }
      },
      "additionalProperties": false
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_create_smart_links_from_spotify_artist annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
dynamoi_list_smart_links — List Smart Links
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants to list free Smart Links for one artist, including release title, public URL, publish state, claim state, render state, and theme. Do not use this for paid campaign lists; use dynamoi_list_campaigns for campaigns. In the final answer, show public URLs and avoid internal IDs unless asked. If empty for an artist with connected Spotify, suggest dynamoi_create_smart_links_from_spotify_artist for catalog import or dynamoi_create_smart_link_from_spotify for one release instead of stopping at 'no Smart Links yet'.

dynamoi_list_smart_links input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1
    },
    "query": {
      "type": "string",
      "maxLength": 120
    },
    "cursor": {
      "type": "string"
    },
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "claimStatus": {
      "enum": [
        "auto_approved",
        "pending_ops_review",
        "verification_deferred",
        "approved_by_ops",
        "rejected"
      ],
      "type": "string"
    },
    "renderState": {
      "enum": [
        "queued",
        "rendering",
        "rendered",
        "failed"
      ],
      "type": "string"
    },
    "publishState": {
      "enum": [
        "published",
        "unpublished"
      ],
      "type": "string"
    }
  },
  "additionalProperties": false
}
dynamoi_list_smart_links output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "smartLinks"
          ],
          "properties": {
            "nextCursor": {
              "type": "string"
            },
            "smartLinks": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "artistHubUrl",
                  "artistId",
                  "artistName",
                  "claimStatus",
                  "createdAt",
                  "id",
                  "isPublic",
                  "publicUrl",
                  "publishState",
                  "releaseSlug",
                  "releaseTitle",
                  "releaseType",
                  "renderState",
                  "spotifyUrl",
                  "takedownStatus",
                  "theme",
                  "updatedAt"
                ],
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "theme": {
                    "enum": [
                      "classic",
                      "brutalist",
                      "aurora",
                      "cinematic"
                    ],
                    "type": "string"
                  },
                  "artistId": {
                    "type": "string"
                  },
                  "isPublic": {
                    "type": "boolean"
                  },
                  "createdAt": {
                    "type": "string"
                  },
                  "publicUrl": {
                    "type": "string"
                  },
                  "updatedAt": {
                    "type": "string"
                  },
                  "artistName": {
                    "type": "string"
                  },
                  "spotifyUrl": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "claimStatus": {
                    "enum": [
                      "auto_approved",
                      "pending_ops_review",
                      "verification_deferred",
                      "approved_by_ops",
                      "rejected"
                    ],
                    "type": "string"
                  },
                  "releaseSlug": {
                    "type": "string"
                  },
                  "releaseType": {
                    "type": "string"
                  },
                  "renderState": {
                    "enum": [
                      "queued",
                      "rendering",
                      "rendered",
                      "failed"
                    ],
                    "type": "string"
                  },
                  "artistHubUrl": {
                    "type": "string"
                  },
                  "publishState": {
                    "enum": [
                      "published",
                      "unpublished"
                    ],
                    "type": "string"
                  },
                  "releaseTitle": {
                    "type": "string"
                  },
                  "takedownStatus": {
                    "enum": [
                      "none",
                      "active",
                      "resolved"
                    ],
                    "type": "string"
                  },
                  "localizedPublicUrls": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              }
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "summary",
            "totalCount"
          ],
          "properties": {
            "summary": {
              "type": "string"
            },
            "nextCursor": {
              "type": "string"
            },
            "totalCount": {
              "type": "number"
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_list_smart_links annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
dynamoi_get_smart_link — Get Smart Link
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user wants full details for one free Smart Link, including release, Spotify URL, public play.dynamoi.com URL, current status, theme source, and next actions. Set includeAnalytics=true for visit/click analytics and includeArtistSettings=true for artist-level theme/pixel settings. In the final answer, lead with the public URL and do not expose internal IDs unless asked.

dynamoi_get_smart_link input schema
{
  "type": "object",
  "properties": {
    "format": {
      "enum": [
        "json",
        "summary"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "dateRange": {
      "type": "object",
      "required": [
        "end",
        "start"
      ],
      "properties": {
        "end": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        "start": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        }
      },
      "additionalProperties": false
    },
    "playLinkId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "spotifyUrl": {
      "type": "string",
      "maxLength": 500,
      "minLength": 1
    },
    "granularity": {
      "enum": [
        "TOTAL",
        "DAILY"
      ],
      "type": "string"
    },
    "includeAnalytics": {
      "type": "boolean"
    },
    "includeBreakdowns": {
      "type": "boolean"
    },
    "includeArtistSettings": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
dynamoi_get_smart_link output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "theme": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "artistId": {
          "type": "string"
        },
        "publicUrl": {
          "type": "string"
        },
        "artistName": {
          "type": "string"
        },
        "nextActions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "publishState": {
          "type": "string"
        },
        "releaseTitle": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "kind": {
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": {}
}
dynamoi_get_smart_link annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
dynamoi_update_smart_link — Update Smart Link
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this when the user wants to change one Smart Link's public description or update artist-level Smart Link theme/pixel settings. Set action to update_description or update_artist_settings. Public availability is artist-wide in the dashboard; this tool does not publish or unpublish individual links. Theme-only updates switch instantly; description or pixel changes may queue background rendering.

dynamoi_update_smart_link input schema
{
  "type": "object",
  "required": [
    "action"
  ],
  "properties": {
    "theme": {
      "enum": [
        "classic",
        "brutalist",
        "aurora",
        "cinematic"
      ],
      "type": "string"
    },
    "action": {
      "enum": [
        "update_description",
        "update_artist_settings"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "playLinkId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "metaPixelId": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 32
        },
        {
          "type": "null"
        }
      ]
    },
    "tiktokPixelId": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 32
        },
        {
          "type": "null"
        }
      ]
    },
    "clientRequestId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "customDescription": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500
        },
        {
          "type": "null"
        }
      ]
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "userIntentSummary": {
      "type": "string",
      "maxLength": 500
    },
    "googleAdsConversionId": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 32
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false
}
dynamoi_update_smart_link output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_update_smart_link annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
dynamoi_update_smart_link_description — Update Smart Link Description
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this when the user wants to update one Smart Link's public description. This tool only changes that link's description; it cannot change artist-level theme or pixel settings and does not publish or unpublish links. Confirm the requested description before calling. A description change may queue background rendering.

dynamoi_update_smart_link_description input schema
{
  "type": "object",
  "required": [
    "customDescription",
    "playLinkId"
  ],
  "properties": {
    "playLinkId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "clientRequestId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "customDescription": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500
        },
        {
          "type": "null"
        }
      ]
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "userIntentSummary": {
      "type": "string",
      "maxLength": 500
    }
  },
  "additionalProperties": false
}
dynamoi_update_smart_link_description output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "artistId": {
          "type": "string"
        },
        "publicUrl": {
          "type": "string"
        },
        "artistName": {
          "type": "string"
        },
        "defaultTheme": {
          "type": "string"
        },
        "renderWarning": {
          "type": [
            "string",
            "null"
          ]
        },
        "renderQueuedCount": {
          "type": "number"
        }
      },
      "additionalProperties": {}
    },
    "kind": {
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": {}
}
dynamoi_update_smart_link_description annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
dynamoi_update_smart_link_artist_settings — Update Smart Link Artist Settings
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this when the user wants to change artist-level Smart Link theme or validated pixel settings. This tool only changes artist settings; it cannot change a link description or publish or unpublish links. Confirm the requested settings before calling. Theme-only changes switch instantly; pixel changes may queue background rendering.

dynamoi_update_smart_link_artist_settings input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "theme": {
      "enum": [
        "classic",
        "brutalist",
        "aurora",
        "cinematic"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "metaPixelId": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 32
        },
        {
          "type": "null"
        }
      ]
    },
    "tiktokPixelId": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 32
        },
        {
          "type": "null"
        }
      ]
    },
    "clientRequestId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "userIntentSummary": {
      "type": "string",
      "maxLength": 500
    },
    "googleAdsConversionId": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 32
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false
}
dynamoi_update_smart_link_artist_settings output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "artistId": {
          "type": "string"
        },
        "publicUrl": {
          "type": "string"
        },
        "artistName": {
          "type": "string"
        },
        "defaultTheme": {
          "type": "string"
        },
        "renderWarning": {
          "type": [
            "string",
            "null"
          ]
        },
        "renderQueuedCount": {
          "type": "number"
        }
      },
      "additionalProperties": {}
    },
    "kind": {
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": {}
}
dynamoi_update_smart_link_artist_settings annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
dynamoi_smart_link_controls — Smart Link Controls
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Sync the native catalog, change artist-wide Smart Link availability, replace tracking IDs, or record a promote request. Confirm the requested change first. Disabling requires confirmedArtistName matching the artist name. Tracking requires all three IDs (null clears) and forwards expectedVersion from artistHub.version. Availability is unversioned. Catalog sync previews at most 25 frozen links. Show the exact count and titles, then repeat the original limit/offset with phase=confirm, previewId and matching confirmedCount. No background catalog continuation is started; another batch requires a new preview and confirmation. Promote request requires playLinkId; it only records the native platform analytics event, sends no message and starts no paid work. Omitted platform uses the native default (iOS).

dynamoi_smart_link_controls input schema
{
  "type": "object",
  "required": [
    "action",
    "artistId"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 25,
      "maximum": 25,
      "minimum": 1
    },
    "phase": {
      "enum": [
        "preview",
        "confirm"
      ],
      "type": "string",
      "default": "preview"
    },
    "action": {
      "enum": [
        "sync_catalog",
        "set_availability",
        "update_tracking",
        "promote_request"
      ],
      "type": "string"
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "maximum": 10000,
      "minimum": 0
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "platform": {
      "anyOf": [
        {
          "enum": [
            "ios",
            "android"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "tracking": {
      "type": "object",
      "required": [
        "googleAdsConversionId",
        "metaPixelId",
        "tiktokPixelId"
      ],
      "properties": {
        "metaPixelId": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 32
            },
            {
              "type": "null"
            }
          ]
        },
        "tiktokPixelId": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 32
            },
            {
              "type": "null"
            }
          ]
        },
        "googleAdsConversionId": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 32
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "isEnabled": {
      "type": "boolean"
    },
    "previewId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "playLinkId": {
      "type": "string",
      "minLength": 1
    },
    "confirmedCount": {
      "type": "integer",
      "maximum": 25,
      "minimum": 0
    },
    "clientRequestId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "expectedVersion": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1
    },
    "confirmedArtistName": {
      "type": "string",
      "maxLength": 500
    }
  },
  "additionalProperties": false
}
dynamoi_smart_link_controls output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_smart_link_controls annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": true
}
dynamoi_update_smart_link_artist_hub_settings — Update Smart Link Artist Hub Settings
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this when the user wants to change artist Smart Link theme, pixels, introduction, official profile links or service order. Pass the read artistHub.version as expectedVersion. Omitted fields preserve stored values; null explicitly clears supported fields. Confirm the requested settings before calling. The result includes the saved artistHub readback. If the theme applies but other changes are refused, reload with dynamoi_get_smart_link (artistId, includeArtistSettings=true) before retrying.

dynamoi_update_smart_link_artist_hub_settings input schema
{
  "type": "object",
  "required": [
    "artistId"
  ],
  "properties": {
    "theme": {
      "enum": [
        "classic",
        "brutalist",
        "aurora",
        "cinematic"
      ],
      "type": "string"
    },
    "artistId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "metaPixelId": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 32
        },
        {
          "type": "null"
        }
      ]
    },
    "profileLinks": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "isHidden",
          "service",
          "url"
        ],
        "properties": {
          "url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 1024
              },
              {
                "type": "null"
              }
            ]
          },
          "service": {
            "enum": [
              "spotify",
              "applemusic",
              "youtube",
              "instagram",
              "facebook",
              "tiktok",
              "soundcloud",
              "bandcamp",
              "deezer",
              "tidal",
              "boomplay",
              "audiomack"
            ],
            "type": "string"
          },
          "isHidden": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "maxItems": 12
    },
    "tiktokPixelId": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 32
        },
        {
          "type": "null"
        }
      ]
    },
    "hubDescription": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500
        },
        {
          "type": "null"
        }
      ]
    },
    "clientRequestId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "expectedVersion": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1
    },
    "servicePriority": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 32
      },
      "maxItems": 4
    },
    "userIntentSummary": {
      "type": "string",
      "maxLength": 500
    },
    "servicePriorityMode": {
      "enum": [
        "country",
        "fixed"
      ],
      "type": "string"
    },
    "googleAdsConversionId": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 32
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false
}
dynamoi_update_smart_link_artist_hub_settings output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_update_smart_link_artist_hub_settings annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
dynamoi_update_smart_link_release_settings — Update Smart Link Release Settings
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this when the user wants to change one Smart Link's release video or catalog destination visibility. Pass the read version as expectedVersion. Set any of customDescription, youtubeUrl or serviceOverrides; omitted fields preserve stored values and null explicitly clears supported fields. Public availability is artist-wide in the dashboard; this tool does not publish or unpublish individual links. Confirm the requested settings before calling. The result includes the saved releaseSettings readback; after an ambiguous failure, read it with dynamoi_get_smart_link (playLinkId; see releaseSettings) before retrying. A description or video change may queue background rendering.

dynamoi_update_smart_link_release_settings input schema
{
  "type": "object",
  "required": [
    "playLinkId"
  ],
  "properties": {
    "playLinkId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "youtubeUrl": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 512
        },
        {
          "type": "null"
        }
      ]
    },
    "clientRequestId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "expectedVersion": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1
    },
    "serviceOverrides": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "hidden",
          "service",
          "url"
        ],
        "properties": {
          "url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 1024
              },
              {
                "type": "null"
              }
            ]
          },
          "hidden": {
            "type": "boolean"
          },
          "service": {
            "type": "string",
            "maxLength": 32
          }
        },
        "additionalProperties": false
      },
      "maxItems": 15
    },
    "customDescription": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500
        },
        {
          "type": "null"
        }
      ]
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "userIntentSummary": {
      "type": "string",
      "maxLength": 500
    }
  },
  "additionalProperties": false
}
dynamoi_update_smart_link_release_settings output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "code": {
      "enum": [
        "ACCOUNT_READ_ONLY",
        "INVALID_SPOTIFY_SOURCE",
        "CAPABILITY_REQUIRED",
        "INSUFFICIENT_SCOPE",
        "TENANT_ACCESS_DENIED",
        "STATE_CONFLICT",
        "QUOTE_CHANGED",
        "RATE_LIMITED",
        "OUTPUT_INVALID",
        "UNKNOWN_EFFECT"
      ],
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {},
      "additionalProperties": {}
    },
    "kind": {
      "enum": [
        "validation",
        "business",
        "platform",
        "unknown"
      ],
      "type": "string"
    },
    "field": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "status": {
      "enum": [
        "success",
        "partial_success",
        "error"
      ],
      "type": "string"
    },
    "draftId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "message": {
      "type": "string"
    },
    "retryable": {
      "type": "boolean"
    },
    "nextAction": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "provide_input",
            "read_status",
            "reconnect",
            "handoff"
          ],
          "type": "string"
        },
        "field": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "reason": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "failureStage": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "prerequisite": {
      "type": "string",
      "maxLength": 240,
      "minLength": 1
    },
    "screeningResult": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "retryAfterSeconds": {
      "type": "integer",
      "maximum": 86400,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
dynamoi_update_smart_link_release_settings annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

3 advertised

dynamoi_about — About Dynamoi

Advertised by the server during the last successful anonymous check.

Canonical About Dynamoi overview: what Dynamoi is, who it is for, free Smart Links, managed Smart Campaigns, YouTube campaigns, distribution, company facts, support, and how to get started.

dynamoi_about URI
dynamoi://about

MIME type: text/markdown

smart-link-theme-preview — Smart Link Theme Preview

Advertised by the server during the last successful anonymous check.

Visual preview for the four Dynamoi Smart Link page themes.

smart-link-theme-preview URI
ui://dynamoi/smart-link-theme-preview-v1.html

MIME type: text/html;profile=mcp-app

artist-workspace — Dynamoi Artist Workspace

Advertised by the server during the last successful anonymous check.

Read-only artist, campaign and Smart Link workspace.

artist-workspace URI
ui://dynamoi/artist-workspace-v1.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1626 ms
95th percentile latency
1626 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1626 ms · metadata changed · 51 tool(s), 3 resource(s), 0 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http dynamoi-mcp https://dynamoi.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add dynamoi-mcp --url https://dynamoi.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable dynamoi-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "dynamoi-mcp": {
      "url": "https://dynamoi.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "dynamoi-mcp": {
      "type": "streamableHttp",
      "url": "https://dynamoi.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start dynamoi-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "dynamoi-mcp": {
      "type": "http",
      "url": "https://dynamoi.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http dynamoi-mcp https://dynamoi.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://dynamoi.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "dynamoi-mcp": {
      "serverUrl": "https://dynamoi.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Dynamoi MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.