Dynamoi
Server Details
Create music promotion campaigns, Smart Links, analytics, and music distribution applications.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- getDynamoi/mcp
- GitHub Stars
- 3
- Server Listing
- Dynamoi MCP
TDQS
Scored across 17 tools
Most tools have clearly distinct purposes, aided by detailed descriptions that explicitly cross-reference alternatives. The two Spotify Smart Link creation tools could be confused, but descriptions clarify when to use each. The OpenAI contract tools (search, fetch) overlap slightly with dynamoi_search but are scoped to a different session type.
The dynamoi_ tools mostly follow a consistent verb_noun pattern (get_, list_, create_, update_, apply_for_, preview_). However, dynamoi_search has no object suffix, and the unprefixed search and fetch tools deviate from the convention, creating a minor inconsistency.
17 tools is slightly heavy but reasonable for a multi-domain server covering artists, campaigns, Smart Links, distribution, and platform status. Each tool appears to earn its place, though some list/get pairs could potentially be consolidated.
The surface covers reads and creation/updates for Smart Links, campaigns, artists, and distribution applications. However, there is no update or delete for campaigns, and artist management beyond listing lacks mutation operations, leaving some lifecycle gaps.
Available Tools
17 toolsdynamoi_apply_for_distributionApply for Music DistributionAIdempotentInspect
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 two-letter country codes, an adult signer attestation, confirmApplicationSubmission=true, and a concise userIntentSummary are required. Repeated submission is idempotent for an active application.
| Name | Required | Description | Default |
|---|---|---|---|
| artistId | Yes | ||
| payoutCountry | Yes | ||
| applicantCountry | Yes | ||
| userIntentSummary | Yes | ||
| taxResidencyCountry | Yes | ||
| adultSignerAttestation | Yes | ||
| confirmApplicationSubmission | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=true), the description discloses the manual-review workflow ('records an application for manual review; it does not approve distribution'), rules out seven behaviors (agreement acceptance, release submission, rights transfer, splits, tax forms, store delivery), and qualifies the idempotency guarantee to 'an active application.' Nothing contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences totaling roughly 80 words with no filler: purpose+gate, behavioral scope, parameter requirements, and idempotency each occupy one sentence in priority order. Every sentence adds distinct information that is not available elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, all-required mutation with an output schema, the description covers the invocation gate, side effects, negative scope, parameter semantics, and idempotency; return values are already handled by the existing output schema. The one gap is referencing 'all five eligibility requirements' without enumerating or locating them, leaving the agent to infer the verification path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description carries the parameter burden and does so substantively: it identifies the three 2-character fields as country codes, mandates an adult signer attestation, requires confirmApplicationSubmission=true, and calls for a 'concise' userIntentSummary — semantics the bare property names never convey. It omits artistId from its enumeration and treats the parameters collectively rather than individually, leaving minor gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Submit an artist's application for Dynamoi music distribution.' The negative scope ('does not approve distribution, accept an agreement, submit a release, transfer rights, configure splits or tax forms, or deliver music to stores') sharply distinguishes it from approval, delivery, and configuration siblings, so an agent can tell it apart from the other 16 tools without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It sets an explicit invocation gate: 'after the user explicitly asks to apply and all five eligibility requirements are met', and the 'does not' list establishes a clear when-not boundary. However, it never enumerates the five eligibility requirements it gates on, and it names no alternative tool (e.g., dynamoi_get_distribution_application) for checking an application's status or manual-review outcome.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dynamoi_create_smart_link_from_spotifyCreate Free Smart Link from SpotifyADestructiveIdempotentInspect
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. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | ||
| artistId | Yes | ||
| spotifyUrl | Yes | ||
| clientRequestId | No | ||
| customDescription | No | ||
| userIntentSummary | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses that free links may be held unpublished pending verification, that the operation is idempotent by returning existing links, that customDescription will update the existing link's public description, and that no paid ad campaign is created. These behavioral details align with readOnlyHint=false, idempotentHint=true, and openWorldHint=true; no contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the primary use case, then packs routing, limitations, idempotency, and output expectations into a dense but waste-free paragraph. Every clause serves a decision an agent must make.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is largely complete for a creation tool with an output schema and rich annotations: it covers accepted input types, exceptions, duplicate handling, and how to present the result. The main gap is the required artistId parameter, which is never semantically explained; an agent may not know whether it is a Dynamoi artist ID or a Spotify artist ID.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does add meaning for spotifyUrl (album/track/artist URL or URI, not playlist) and customDescription (updates an existing link's public description), but it leaves artistId, format, clientRequestId, and userIntentSummary semantically unexplained beyond their names and schema constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: create one free Dynamoi Smart Link from a Spotify album/track URL/URI or a single starter artist release. It also distinguishes itself from dynamoi_create_smart_links_from_spotify_artist, which handles full-catalog artist imports, so an agent can pick the correct tool immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly opens with 'Use this when...', names the exact alternative to prefer for full-catalog artist imports, and states exclusions such as 'Spotify playlist URLs are not supported today' and 'This does not create a paid ad campaign.' This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dynamoi_create_smart_links_from_spotify_artistCreate Free Smart Links for Spotify ArtistADestructiveIdempotentInspect
Use this when the user gives a Spotify artist URL and wants Dynamoi to create, import, or refresh free Smart Links for the artist catalog and return the artist hub. If the signed-in user has no Dynamoi artist yet, omit artistId so Dynamoi can create the first artist from the Spotify artist profile. This starts the background catalog import so the user does not need to open the dashboard. Smart Links are free to create and manage. High-popularity or unverifiable artist catalog links may stay unpublished in verification hold until Dynamoi can verify the client relationship. This does not create a paid ad campaign. In the final answer, lead with the artist hub URL and current public Smart Link URLs; do not expose internal IDs unless asked.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | ||
| artistId | No | ||
| clientRequestId | No | ||
| spotifyArtistUrl | Yes | ||
| userIntentSummary | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavior beyond the generic annotations: it starts a background catalog import, explains that high-popularity or unverifiable links may remain in verification hold, and clarifies that Smart Links are free. This is useful, but it does not comment on the potentially destructive indication in annotations or enumerate permission prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The front-loaded trigger is good, but the description carries a few non-core sentences such as 'Smart Links are free to create and manage' and the final-answer instruction about internal IDs. These add adjacent context, but they dilute the conciseness and are not all needed for correct tool selection or invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with five parameters and an output schema, the description covers the main flow, the optional artistId behavior, the background side effects, and a key caveat about links staying unpublished. A few optional parameters and the exact output structure are left to the schema or the agent's inference, but this is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It explains spotifyArtistUrl as the trigger and artistId with a special rule, but format, clientRequestId, and userIntentSummary are not explained. Those parameter names are somewhat inferable and the format enum provides some hints, but there is still a gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the trigger ('when the user gives a Spotify artist URL') and states the exact behavior: create, import, or refresh free Smart Links for the artist catalog and return the artist hub. The plural 'catalog' and title make it distinguishable from the sibling single-link tool dynamoi_create_smart_link_from_spotify.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear condition for use and explicitly instructs when to omit artistId ('If signed-in user has no Dynamoi artist yet, omit artistId'). It also excludes a common wrong expectation ('This does not create a paid ad campaign'), but it does not name sibling tools that should be preferred for other cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dynamoi_get_account_overviewGet Account OverviewARead-onlyInspect
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. Always pass intent to match that explicit account question. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | ||
| intent | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description does not contradict them. The description adds behavioral context beyond annotations by noting the account-level state 'can span multiple artists,' which clarifies the scope of the tool. It doesn't describe the return shape, but an output schema exists, so that is not required. The extra scope detail earns a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the primary usage directive and is concise, consisting of four sentences with no redundant information. Every sentence adds either usage guidance, exclusions, or scope clarification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, a description of return values is unnecessary. The description covers the core use case, exclusions, limitations, and scope, and the annotations cover safety. All information an agent needs to choose and correctly invoke the tool is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions that 'Always pass intent to match that explicit account question,' but it does not explain each intent enum value or how they map to specific outputs. The enum values (account_overview, artist_access_check, etc.) are self-explanatory, and 'format' is obvious, but the description offers minimal additional guidance. Since the schema gives no descriptions, a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns account-level information ('who is logged in, how many organizations or artists it can access, or whether account-level platform connections exist'). It uses a specific verb ('get') and resource ('account overview'), and explicitly distinguishes it from sibling tools like dynamoi_get_platform_status and dynamoi_list_artists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use conditions ('Use this when the user explicitly asks about the signed-in Dynamoi account itself') and explicit when-not-to-use exclusions, naming exact alternatives: 'use dynamoi_get_platform_status for the target artist instead' for onboarding confirmation, 'use dynamoi_list_artists for that' for enumerating artists, and a 'Never use this to check context' rule. This leaves no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dynamoi_get_artist_analyticsGet Artist AnalyticsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | ||
| artistId | Yes | ||
| dateRange | No | ||
| granularity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds context about the summary format and the instruction to stop calling more analytics tools if the strongest-campaign comparison is already returned, which is useful. However, it doesn't disclose return value structure or any rate limits, but with annotations the bar is lower.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise but somewhat dense, with multiple conditional clauses jammed into two sentences. It front-loads the primary purpose but then adds a quippy 'stop and answer' note that could be clearer. It's not bloated but could be more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and simple parameters, the description covers the key usage context: when to use, format selection, granularity, and routing to sibling. It lacks details on default parameter values (like default dateRange or granularity) but with an output schema and annotations, this is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does explain the meaning of granularity=DAILY and format=summary, and implies dateRange is for filtering, but it doesn't elaborate on artistId or default behaviors. Given 0% coverage, this is a good compensatory effort.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the scope (artist-level performance across all campaigns) and mentions key parameters like granularity and format, but the title 'Get Artist Analytics' is generic and does not clearly differentiate from siblings like dynamoi_get_campaign or dynamoi_list_campaigns. The description does clarify it's for artist-level not campaign-level, so it's clear but not sharply distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: for artist-level performance, for daily breakdowns, and for summary format. It also gives a clear exclusion: for one campaign's metrics, use dynamoi_get_campaign with includeAnalytics=true. This is strong usage guidance, though it doesn't cover all alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dynamoi_get_campaignGet CampaignARead-onlyInspect
Use this when the user wants full details for one campaign, including budget, targeting, platform status, and next actions. Set includeAnalytics=true for one-campaign performance, 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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | ||
| campaignId | Yes | ||
| includeAnalytics | No | ||
| includeCountries | No | ||
| analyticsDateRange | No | ||
| analyticsGranularity | No | ||
| includeDeploymentStatus | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations confirm it's read-only and non-destructive)Skip. The description adds context about data completeness (which flags give what detail) without contradicting annotations. It doesn't cover default behavior when flags are omitted, but annotations already cover safety, so a 4 is fair.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences pack a lot of actionable guidance with no waste)Skip. Context is front-loaded with 'full details for one campaign, including budget...', then conditions. Could be slightly shortened, but every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex with 7 params and an output schema. The description covers selection criteria, flag semantics, and shared usage patterns (after mutation). It doesn't, however, explain the output schema or the analyticsDateRange/granularity interactions, but since output schema exists)Skip, and those params are likely self-explanatory from the schema, the description is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for parameter descriptions, so the description is the sole source of semantics for the seven parameters. It explains each flag's effect (includeAnalytics for performance, includeDeploymentStatus for blockers, includeCountries for full country list) and the format=summary use case. This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves full details for a single campaign, specifying the data scope (budget, targeting, platform status, next actions). It explicitly differentiates from list tools and mentions alternatives, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance by describing scenario-specific flags, tells the agent not to use it for campaign lists (pointing to dynamoi_list_campaigns), and recommends format=summary after mutations. This covers both usage and exclusions thoroughly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dynamoi_get_distribution_applicationCheck Distribution ApplicationARead-onlyInspect
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 Soundcharts 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 send the user to the distribution application in Dynamoi. Identity connections do not require advertising billing.
| Name | Required | Description | Default |
|---|---|---|---|
| artistId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds valuable behavioral context: it lists the exact five criteria checked, notes that approval is never guaranteed, and clarifies that identity connections don't require advertising billing. It also gives fallback instructions. It doesn't contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a bit long but well-structured. It front-loads the usage condition, then lists criteria, then provides fallback guidance. Every sentence adds value; nothing is redundant. It could be slightly more concise, but the density of useful information justifies the length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (five requirements, fallback logic) and the presence of an output schema, the description is complete. It covers when to use, what it checks, what to do with missing connections, and a critical caveat (no guarantee of approval). Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description implicitly references the artist by talking about 'an artist qualifies'. The single parameter artistId is self-explanatory given the context, and the schema provides format/pattern constraints. The description doesn't explicitly define the parameter but the meaning is clear enough for an agent to infer its purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: checking whether an artist qualifies for distribution, listing the five requirements, and checking application status. It uses a specific verb ('check') and resource ('distribution application') and distinguishes itself from siblings like dynamoi_apply_for_distribution by focusing on qualification rather than submission.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use the tool ('when the user asks whether an artist qualifies... wants the five application requirements, or wants the status of an existing distribution application'). It also provides clear alternative routing: when connection tools are available, use purpose=distribution_identity for missing identities; otherwise send the user to the application. This is explicit and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dynamoi_get_platform_statusGet Platform StatusARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | ||
| artistId | Yes | ||
| onboardingFlow | No | ||
| onboardingAttemptId | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds meaningful operational context: it is used for polling after a connection-start flow, and the returned onboardingAttemptId/onboardingFlow help correlate the browser step. It does not over-explain or contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: purpose, polling behavior, and exclusions. The main use is front-loaded, and every sentence contributes information an agent needs; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the return shape is already covered. The description supplies usage timing, correlation behavior, and clear exclusions, which is sufficient for a read-only status tool with only four parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description bears the burden for parameters. It adds meaning to onboardingAttemptId and onboardingFlow by saying they come from a previous connection-start flow and are used for correlation, but it does not explain artistId or format. The required artistId is at least visible from the schema, and the format enum is self-describing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation: checking whether Spotify, Meta, or YouTube are connected and which setup steps block launches. This goes beyond the title by defining scope and outcome, and the exclusions separate it from billing and marketing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool ('when the user wants to know whether...'), when to poll after a connection-start flow, and when not to use it (billing, generic Instagram/marketing advice). This gives an agent clear decision rules without needing to inspect siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dynamoi_get_smart_linkGet Smart LinkARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | ||
| artistId | No | ||
| dateRange | No | ||
| playLinkId | No | ||
| spotifyUrl | No | ||
| granularity | No | ||
| includeAnalytics | No | ||
| includeBreakdowns | No | ||
| includeArtistSettings | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: it instructs the agent to lead with the public URL, not expose internal IDs unless asked, and explains what includeAnalytics and includeArtistSettings toggle. It does not mention rate limits or pagination, but for a single-resource read tool that is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all informative, with the primary usage instruction front-loaded and the output-formatting guidance at the end. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 9 parameters, an output schema, and read-only annotations. The description covers the core purpose, the two optional toggles, and the expected answer format. It does not explain how to identify 'one free Smart Link' (which identifier to use) or what the output schema contains, but the output schema exists and the identifier semantics are partially inferable from parameter names.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the two boolean parameters (includeAnalytics, includeArtistSettings) and the overall purpose of the tool, but it does not explain format, dateRange, granularity, includeBreakdowns, or the identifier parameters. The schema provides enums and formats, but the description leaves several parameters' semantics to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('get'), a specific resource ('one free Smart Link'), and enumerates the exact details returned (release, Spotify URL, public URL, status, theme source, next actions). It clearly distinguishes from siblings like list_smart_links (which lists) and update_smart_link (which mutates).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description opens with 'Use this when the user wants full details for one free Smart Link', which gives clear context for when to invoke it. It does not explicitly name alternatives or exclusion conditions, but the scope ('one free Smart Link') and the sibling names make the boundary reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dynamoi_list_artistsList ArtistsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| format | No | ||
| artistId | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive behavior, lowering the burden. The description adds valuable behavioral context: the empty-result handling and the distinction between roster and single-artist profile. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but each sentence serves a distinct purpose: main usage, artistId variant, exclusions, generic-advice warning, and empty-result handling. It is front-loaded with the primary purpose and avoids fluff, though it could be slightly tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool, it covers selection criteria, exclusions, and an important edge case. The output schema exists, which likely documents the return format. The main gap is parameter semantics, but overall an agent has enough to invoke it correctly for typical cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only explains artistId ('Pass artistId when you need the full profile...') but leaves limit, cursor, and format undefined. The agent may infer limit/cursor for pagination, but the enum format is not described, leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (list) and resource (artists/YouTube channels) with the exact attributes returned (billing status, active campaign count, role). It explicitly differentiates from siblings like dynamoi_list_campaigns and dynamoi_get_campaign, and clarifies the dual behavior when artistId is passed (roster vs. full profile).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use ('Use this when...'), explicit exclusions ('Do not use this for campaign details; use...'), and a never-condition for generic advice. Also handles an edge case (empty result) by routing to dynamoi_get_account_overview.recommendedNextActions, which is actionable and specific.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dynamoi_list_campaignsList CampaignsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| format | No | ||
| status | No | ||
| artistId | Yes | ||
| campaignType | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and non-destructive behavior Mend. The description adds input-filter behavior (type and status) but does not say what the operation returns, whether results are paginated, or what 'format' affects (json vs summary). With readOnlyHint covering the main safety aspect, this is acceptable but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler. The first states when to use, the second states when not to use and where to route instead, and the third captures a precondition. Every sentence carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key preconditions and routing comprehensively. It does not describe the response shape or explain the format/cursor params, and there is no output schema, so an agent may not know whether results are paged or whether 'summary' vs 'json' changes the response. Still, this is a minor gap for a read-only list endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies 'filtered by type or status', which maps to campaignType and status. However, schema parameter descriptions are entirely missing (0% coverage) and the description does not explain limit, cursor, or format, leaving the agent to infer meaning from parameter names and enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (browse), a specific resource (campaigns), a scoping constraint (one artist), and optional filters (type/status). It explicitly contrasts with the single-campaign deep-dive tool, so an agent cannot confuse it with get_campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Excellent conditional routing: 'when the user wants to browse campaigns', 'do not use for a single campaign deep dive', 'never use to personalize generic marketing advice', and a precondition check ('if no artists yet, route via get_account_overview first'). This gives the agent clear decision rules for when to call this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dynamoi_list_smart_linksList Smart LinksARead-onlyInspect
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| cursor | No | ||
| format | No | ||
| artistId | Yes | ||
| claimStatus | No | ||
| renderState | No | ||
| publishState | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint=true and destructiveHint=false, so the description doesn't need to restate safety. It adds behavioral context about response presentation (show public URLs, avoid internal IDs) and the empty-result behavior (suggest alternatives). This is useful beyond the annotations, though it doesn't detail any rate limits or response structure (output schema handles that).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each adding distinct value: purpose and scope, exclusion of alternative, and fallback behavior. Front-loaded with the core purpose using strong verbs and clear nouns. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is moderately complex (8 params, mostly optional, with output schema). The description covers the critical usage decision (free vs paid), response presentation, and empty-result handling. It doesn't explain every parameter but the schema provides enums and validation. The output schema covers return structureanc. For its complexity, the description is complete enough for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions the core parameter artistId implicitly ('for one artist') and the result fields, but doesn't explain filters like claimStatus, renderState, publishState, limit, query, cursor, or format beyond their schema definitions. The description adds context about output formatting but not much about these parameters, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'list free Smart Links for one artist' with the exact fields returned (release title, public URL, publish state, etc.). Distinguishes from paid campaigns by naming the sibling dynamoi_list_campaigns. The verb 'list' and resource 'Smart Links' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (user wants free Smart Links for one artist), when not to use (paid campaigns), and names the alternative tool. Also provides fallback suggestions (dynamoi_create_smart_links_from_spotify_artist, dynamoi_create_smart_link_from_spotify) when no links exist. This is comprehensive routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dynamoi_preview_smart_link_themesPreview Smart Link ThemesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| artistName | No | ||
| releaseTitle | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include readOnlyHint=true and destructiveHint=false, covering the read-only nature. The description adds value by explicitly stating 'This is a read-only visual preview and does not create, publish, update, or promote a Smart Link,' reinforcing the non-mutating behavior and ruling out any ambiguity with creation/update siblings. It does not detail the output format, but that is covered by the output schema. Since annotations already carry the core safety profile, the description's extra clarification earns a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. The first sentence front-loads the primary use cases, and the second sentence clarifies the read-only nature. Every word earns its place, and the structure is efficient for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only preview tool, the description covers the core triggers and explicitly states non-actions. The output schema exists (as noted in signals), so return format is handled. The only notable gap is parameter semantics, which is a minor issue since both parameters are optional and the tool can likely function without them. Overall, the description is sufficiently complete for an agent to know when and how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage (no descriptions on properties), and the description does not mention the parameters artistName and releaseTitle at all. Both parameters are optional, so the agent may not know whether to pass them or how they affect the preview. The description should at least hint that these parameters customize the preview context (e.g., artist or release name for display). This is a significant gap given the schema provides no hints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: previewing Smart Link themes. It explicitly lists the trigger scenarios (asking what pages can look like, comparing themes, previewing before creation/update) and differentiates it from creation/update tools by stating it is read-only. The verb 'preview' and resource 'themes' are specific, distinguishing it from sibling tools like dynamoi_create_smart_link.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: '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.' It also states what it does NOT do ('does not create, publish, update, or promote'), which acts as a when-not-to-use and differentiates it from sibling tools. This is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dynamoi_searchSearch DynamoiARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| limit | No | ||
| query | No | ||
| cursor | No | ||
| format | No | ||
| artistId | No | ||
| includeArchived | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, covering the safe read-only behavior. The description adds useful behavioral context beyond the annotations: what to do on an empty result for a brand-new user (suggest creating the first artist hub instead of reporting 'no records found'). This is a meaningful non-obvious behavior not represented in the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences of actionable guidance focused on selection and edge-case handling. It is concise and front-loaded with primary usage guidance, but the sentence about the empty-result behavior could arguably be moved into a 'Notes' section. Still, it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It fully describes the decision of when and when not to call the tool, and it benefits from annotations covering read-only safety. However, given the tool has 7 parameters and a 0% schema description coverage, it is severely incomplete for invocation. The description does not explain param structure, accepted formats, or how the returned search results are shaped; the output schema exists but parameters remain opaque.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain any of the 7 parameters. It does not describe what 'type', 'query', 'limit', 'cursor', 'format', 'artistId', or 'includeArchived' mean or how to use them together. The only indirect mapping is that 'artist, release, campaign, smart link' loosely correspond to the 'type' enum, but nothing clarifies param semantics or relationships.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly defines when to use the tool: when an artist, release, campaign, or smart link is mentioned but the exact record is not known. It clearly distinguishes a search action from getting a known record and explicitly contrasts it with analytics/billing summaries, which separates it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance ('Use this when... you do not yet know the exact record to inspect') and when-not-to-use guidance ('Do not use this for analytics summaries or billing questions once you already know the target record'). It also names a concrete alternative to invoke when the search returns empty for a new user.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dynamoi_update_smart_linkUpdate Smart LinkADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No | ||
| action | Yes | ||
| artistId | No | ||
| playLinkId | No | ||
| metaPixelId | No | ||
| tiktokPixelId | No | ||
| clientRequestId | No | ||
| customDescription | No | ||
| expectedUpdatedAt | No | ||
| userIntentSummary | No | ||
| googleAdsConversionId | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal mutation, idempotency, and destructiveness; the description adds non-obvious behavior: theme-only updates switch instantly while description or pixel changes may queue background rendering. This is valuable context beyond the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences with no fluff. The most important routing information (action values) is front-loaded, and each sentence adds distinct value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers key usage and latency behavior, and the output schema covers return values. But for an 11-parameter update tool, it omits guidance on parameter dependencies, required IDs, and the meaning of fields like expectedUpdatedAt and userIntentSummary, making it less than fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate, and it does clarify action, theme, and pixel categories. However, it does not explain several parameters such as artistId, playLinkId, customDescription, clientRequestId, expectedUpdatedAt, userIntentSummary, or googleAdsConversionId, leaving significant gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('change') and resource ('Smart Link's public description' or 'artist-level theme/pixel settings'), and details the action values that select between the two. It clearly differentiates this tool from sibling create/list/get tools by stating its update scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening 'Use this when...' gives explicit trigger conditions. It also adds an exclusion by stating the tool does not publish or unpublish individual links, though it does not name a specific sibling alternative for that operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchFetch (OpenAI Connectors)ARead-onlyInspect
OpenAI ChatGPT Deep Research / Connectors fetch contract. Given an id returned by search (formatted as 'artist:', 'campaign:', or 'smartlink:'), returns the full record for citation.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false. The description adds the fetch-by-id contract and 'for citation' intent, but it does not add much beyond the structured annotations and does not mention not-found behavior, errors, or quotas. That is acceptable because the safety profile is carried by the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The substantive contract is delivered in one tightly scoped sentence, with the input-format rule immediate. The opening 'OpenAI ChatGPT Deep Research / Connectors fetch contract' line is contextual rather than meaningful guidance, but the definition stays compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only fetch with an output schema present, the description covers what is needed: where the id comes from, the accepted identifier shapes, and the full-record-for-citation result behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It precisely defines the id parameter by specifying the three accepted formats and the source of the id (`search`), which is enough for a single-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a clear operation—fetch a full record by id—and specifies the three valid id prefixes ('artist', 'campaign', 'smartlink'). It does not explicitly differentiate itself from sibling getters like dynamoi_get_campaign or dynamoi_get_smart_link, so some distinction is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear when-to-use precondition: use it with an id returned by `search`, and the id must match one of three formats. It does not state when-not-to-use a sibling tool or name alternatives, but the orchestration path is explicitly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch (OpenAI Connectors)ARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| data | No | |
| kind | No | |
| field | No | |
| status | Yes | |
| message | No | |
| retryable | No | |
| nextAction | No | |
| prerequisite | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly=true and no destructive behavior. The description adds that results are matching Dynamoi entities intended for citation, but it does not explain how matching works, what connectors are queried, or any additional read behavior. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and direct, with the usage distinction placed at the end. Minor jargon such as 'search contract' adds a bit of unnecessary abstraction, but the overall length and structure are appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Combined with readOnly annotations, the returned entity types, and the explicit sibling distinction, the description provides enough context for a simple search operation. It does not explain edge cases like empty results or query format, but those are minor for this straightforward read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single query parameter has little description coverage, and the description only implies its meaning through 'Returns matching...'. It does not explain expected query syntax, whether it matches IDs/names/natural language, or any limits, leaving the parameter semantics largely to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that this search returns matching Dynamoi artists, campaigns, and Smart Links for citation in deep-research sessions. This is a clear verb-object result statement, and the distinction from dynamoi_search is meaningful.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly routes usage: use this tool for OpenAI ChatGPT Deep Research/Connectors, and use dynamoi_search for regular ChatGPT chat. This gives a clear selection rule among closely related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
17 tool updates
- Changed
dynamoi_apply_for_distribution6 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
- Changed
dynamoi_create_smart_link_from_spotify8 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - removed
Output schema / properties / data / properties / odesliStatusRemoved value: -{ - "enum": [ - "pending", - "resolved", - "failed" - ], - "type": "string" -} - changed
Output schema / properties / data / requiredPrevious value: -[ - "artistHubUrl", - "artistId", - "artistName", - "claimStatus", - "createdAt", - "id", - "isPublic", - "odesliStatus", - "publicUrl", - "publishState", - "releaseSlug", - "releaseTitle", - "releaseType", - "renderState", - "spotifyUrl", - "takedownStatus", - "theme", - "updatedAt", - "customDescription", - "nextActions", - "originalSpotifyUrl", - "summary", - "outcome", - "workflowWarning" -]New value: +[ + "artistHubUrl", + "artistId", + "artistName", + "claimStatus", + "createdAt", + "id", + "isPublic", + "publicUrl", + "publishState", + "releaseSlug", + "releaseTitle", + "releaseType", + "renderState", + "spotifyUrl", + "takedownStatus", + "theme", + "updatedAt", + "customDescription", + "nextActions", + "originalSpotifyUrl", + "summary", + "outcome", + "workflowWarning" +] - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
- Changed
dynamoi_create_smart_links_from_spotify_artist9 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - changed
Output schema / properties / data / properties / initialSmartLink / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "artistHubUrl": { - "type": "string" - }, - "artistId": { - "type": "string" - }, - "artistName": { - "type": "string" - }, - "claimStatus": { - "enum": [ - "auto_approved", - "pending_ops_review", - "verification_deferred", - "approved_by_ops", - "rejected" - ], - "type": "string" - }, - "createdAt": { - "type": "string" - }, - "id": { - "type": "string" - }, - "isPublic": { - "type": "boolean" - }, - "localizedPublicUrls": { - "items": { - "type": "string" - }, - "type": "array" - }, - "odesliStatus": { - "enum": [ - "pending", - "resolved", - "failed" - ], - "type": "string" - }, - "publicUrl": { - "type": "string" - }, - "publishState": { - "enum": [ - "published", - "unpublished" - ], - "type": "string" - }, - "releaseSlug": { - "type": "string" - }, - "releaseTitle": { - "type": "string" - }, - "releaseType": { - "type": "string" - }, - "renderState": { - "enum": [ - "queued", - "rendering", - "rendered", - "failed" - ], - "type": "string" - }, - "spotifyUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "takedownStatus": { - "enum": [ - "none", - "active", - "resolved" - ], - "type": "string" - }, - "theme": { - "enum": [ - "classic", - "brutalist", - "aurora", - "cinematic" - ], - "type": "string" - }, - "updatedAt": { - "type": "string" - } - }, - "required": [ - "artistHubUrl", - "artistId", - "artistName", - "claimStatus", - "createdAt", - "id", - "isPublic", - "odesliStatus", - "publicUrl", - "publishState", - "releaseSlug", - "releaseTitle", - "releaseType", - "renderState", - "spotifyUrl", - "takedownStatus", - "theme", - "updatedAt" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "artistHubUrl": { + "type": "string" + }, + "artistId": { + "type": "string" + }, + "artistName": { + "type": "string" + }, + "claimStatus": { + "enum": [ + "auto_approved", + "pending_ops_review", + "verification_deferred", + "approved_by_ops", + "rejected" + ], + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "id": { + "type": "string" + }, + "isPublic": { + "type": "boolean" + }, + "localizedPublicUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "publicUrl": { + "type": "string" + }, + "publishState": { + "enum": [ + "published", + "unpublished" + ], + "type": "string" + }, + "releaseSlug": { + "type": "string" + }, + "releaseTitle": { + "type": "string" + }, + "releaseType": { + "type": "string" + }, + "renderState": { + "enum": [ + "queued", + "rendering", + "rendered", + "failed" + ], + "type": "string" + }, + "spotifyUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "takedownStatus": { + "enum": [ + "none", + "active", + "resolved" + ], + "type": "string" + }, + "theme": { + "enum": [ + "classic", + "brutalist", + "aurora", + "cinematic" + ], + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "artistHubUrl", + "artistId", + "artistName", + "claimStatus", + "createdAt", + "id", + "isPublic", + "publicUrl", + "publishState", + "releaseSlug", + "releaseTitle", + "releaseType", + "renderState", + "spotifyUrl", + "takedownStatus", + "theme", + "updatedAt" + ], + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / data / properties / smartLinks / items / properties / odesliStatusRemoved value: -{ - "enum": [ - "pending", - "resolved", - "failed" - ], - "type": "string" -} - changed
Output schema / properties / data / properties / smartLinks / items / requiredPrevious value: -[ - "artistHubUrl", - "artistId", - "artistName", - "claimStatus", - "createdAt", - "id", - "isPublic", - "odesliStatus", - "publicUrl", - "publishState", - "releaseSlug", - "releaseTitle", - "releaseType", - "renderState", - "spotifyUrl", - "takedownStatus", - "theme", - "updatedAt" -]New value: +[ + "artistHubUrl", + "artistId", + "artistName", + "claimStatus", + "createdAt", + "id", + "isPublic", + "publicUrl", + "publishState", + "releaseSlug", + "releaseTitle", + "releaseType", + "renderState", + "spotifyUrl", + "takedownStatus", + "theme", + "updatedAt" +] - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
- Changed
dynamoi_get_account_overview6 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
- Changed
dynamoi_get_artist_analytics6 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
- Changed
dynamoi_get_campaign6 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
- Changed
dynamoi_get_distribution_application6 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
- Changed
dynamoi_get_platform_status6 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
- Changed
dynamoi_get_smart_link6 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
- Changed
dynamoi_list_artists6 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
- Changed
dynamoi_list_campaigns6 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
- Changed
dynamoi_list_smart_links7 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - changed
Output schema / properties / data / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "nextCursor": { - "type": "string" - }, - "smartLinks": { - "items": { - "additionalProperties": false, - "properties": { - "artistHubUrl": { - "type": "string" - }, - "artistId": { - "type": "string" - }, - "artistName": { - "type": "string" - }, - "claimStatus": { - "enum": [ - "auto_approved", - "pending_ops_review", - "verification_deferred", - "approved_by_ops", - "rejected" - ], - "type": "string" - }, - "createdAt": { - "type": "string" - }, - "id": { - "type": "string" - }, - "isPublic": { - "type": "boolean" - }, - "localizedPublicUrls": { - "items": { - "type": "string" - }, - "type": "array" - }, - "odesliStatus": { - "enum": [ - "pending", - "resolved", - "failed" - ], - "type": "string" - }, - "publicUrl": { - "type": "string" - }, - "publishState": { - "enum": [ - "published", - "unpublished" - ], - "type": "string" - }, - "releaseSlug": { - "type": "string" - }, - "releaseTitle": { - "type": "string" - }, - "releaseType": { - "type": "string" - }, - "renderState": { - "enum": [ - "queued", - "rendering", - "rendered", - "failed" - ], - "type": "string" - }, - "spotifyUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "takedownStatus": { - "enum": [ - "none", - "active", - "resolved" - ], - "type": "string" - }, - "theme": { - "enum": [ - "classic", - "brutalist", - "aurora", - "cinematic" - ], - "type": "string" - }, - "updatedAt": { - "type": "string" - } - }, - "required": [ - "artistHubUrl", - "artistId", - "artistName", - "claimStatus", - "createdAt", - "id", - "isPublic", - "odesliStatus", - "publicUrl", - "publishState", - "releaseSlug", - "releaseTitle", - "releaseType", - "renderState", - "spotifyUrl", - "takedownStatus", - "theme", - "updatedAt" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "smartLinks" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "nextCursor": { - "type": "string" - }, - "summary": { - "type": "string" - }, - "totalCount": { - "type": "number" - } - }, - "required": [ - "summary", - "totalCount" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "nextCursor": { + "type": "string" + }, + "smartLinks": { + "items": { + "additionalProperties": false, + "properties": { + "artistHubUrl": { + "type": "string" + }, + "artistId": { + "type": "string" + }, + "artistName": { + "type": "string" + }, + "claimStatus": { + "enum": [ + "auto_approved", + "pending_ops_review", + "verification_deferred", + "approved_by_ops", + "rejected" + ], + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "id": { + "type": "string" + }, + "isPublic": { + "type": "boolean" + }, + "localizedPublicUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "publicUrl": { + "type": "string" + }, + "publishState": { + "enum": [ + "published", + "unpublished" + ], + "type": "string" + }, + "releaseSlug": { + "type": "string" + }, + "releaseTitle": { + "type": "string" + }, + "releaseType": { + "type": "string" + }, + "renderState": { + "enum": [ + "queued", + "rendering", + "rendered", + "failed" + ], + "type": "string" + }, + "spotifyUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "takedownStatus": { + "enum": [ + "none", + "active", + "resolved" + ], + "type": "string" + }, + "theme": { + "enum": [ + "classic", + "brutalist", + "aurora", + "cinematic" + ], + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "artistHubUrl", + "artistId", + "artistName", + "claimStatus", + "createdAt", + "id", + "isPublic", + "publicUrl", + "publishState", + "releaseSlug", + "releaseTitle", + "releaseType", + "renderState", + "spotifyUrl", + "takedownStatus", + "theme", + "updatedAt" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "smartLinks" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "nextCursor": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "totalCount": { + "type": "number" + } + }, + "required": [ + "summary", + "totalCount" + ], + "type": "object" + } +] - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
- Changed
dynamoi_preview_smart_link_themes6 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
- Changed
dynamoi_search6 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
- Changed
dynamoi_update_smart_link6 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
- Changed
fetch6 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
- Changed
search6 fields changed- added
Output schema / properties / codeAdded value: +{ + "enum": [ + "ACCOUNT_READ_ONLY", + "INVALID_SPOTIFY_SOURCE", + "CAPABILITY_REQUIRED", + "INSUFFICIENT_SCOPE", + "STATE_CONFLICT", + "QUOTE_CHANGED", + "RATE_LIMITED", + "OUTPUT_INVALID", + "UNKNOWN_EFFECT" + ], + "type": "string" +} - added
Output schema / properties / fieldAdded value: +{ + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / nextActionAdded value: +{ + "additionalProperties": false, + "properties": { + "field": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "provide_input", + "read_status", + "reconnect", + "handoff" + ], + "type": "string" + }, + "reason": { + "maxLength": 240, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" +} - added
Output schema / properties / prerequisiteAdded value: +{ + "maxLength": 240, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / retryAfterSecondsAdded value: +{ + "maximum": 86400, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / retryableAdded value: +{ + "type": "boolean" +}
20 tool updates
- Changed
dynamoi_get_account_overview9 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / data / properties / artistCountAdded value: +{ + "type": "number" +} - added
Output schema / properties / data / properties / artistsAdded value: +{ + "additionalProperties": false, + "properties": { + "count": { + "type": "number" + }, + "summaries": { + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "publicUrl": { + "type": "string" + }, + "summary": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "count", + "summaries" + ], + "type": "object" +} - added
Output schema / properties / data / properties / organizationCountAdded value: +{ + "type": "number" +} - added
Output schema / properties / data / properties / recommendedNextActionsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / data / properties / stateAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / data / properties / summaryAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / userAdded value: +{ + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + } + }, + "type": "object" +} - removed
Output schema / properties / kind / enumRemoved value: -[ - "validation", - "business", - "platform", - "unknown" -]
- Changed
dynamoi_get_artist_analytics6 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / data / properties / artistIdAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / artistNameAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / dateRangeAdded value: +{ + "additionalProperties": false, + "properties": { + "end": { + "type": "string" + }, + "start": { + "type": "string" + } + }, + "required": [ + "end", + "start" + ], + "type": "object" +} - added
Output schema / properties / data / properties / summaryAdded value: +{ + "type": "string" +} - removed
Output schema / properties / kind / enumRemoved value: -[ - "validation", - "business", - "platform", - "unknown" -]
- Removed
dynamoi_get_billing - Changed
dynamoi_get_campaign10 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / data / properties / artistIdAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / contentTitleAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / idAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / nameAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / nextActionsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / data / properties / publicUrlAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / statusAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / summaryAdded value: +{ + "type": "string" +} - removed
Output schema / properties / kind / enumRemoved value: -[ - "validation", - "business", - "platform", - "unknown" -]
- Removed
dynamoi_get_campaign_readiness - Changed
dynamoi_get_platform_status6 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / data / properties / artistIdAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / artistNameAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / platformsAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / data / properties / summaryAdded value: +{ + "type": "string" +} - removed
Output schema / properties / kind / enumRemoved value: -[ - "validation", - "business", - "platform", - "unknown" -]
- Changed
dynamoi_get_smart_link12 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / data / properties / artistIdAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / artistNameAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / idAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / nameAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / nextActionsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / data / properties / publicUrlAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / publishStateAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / releaseTitleAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / summaryAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / themeAdded value: +{ + "type": "string" +} - removed
Output schema / properties / kind / enumRemoved value: -[ - "validation", - "business", - "platform", - "unknown" -]
- Removed
dynamoi_launch_campaign - Changed
dynamoi_list_artists6 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / data / properties / artistsAdded value: +{ + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "publicUrl": { + "type": "string" + }, + "summary": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / data / properties / nextCursorAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / summaryAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / totalCountAdded value: +{ + "type": "number" +} - removed
Output schema / properties / kind / enumRemoved value: -[ - "validation", - "business", - "platform", - "unknown" -]
- Removed
dynamoi_list_available_countries - Changed
dynamoi_list_campaigns6 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / data / properties / campaignsAdded value: +{ + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "publicUrl": { + "type": "string" + }, + "summary": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / data / properties / nextCursorAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / summaryAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / totalCountAdded value: +{ + "type": "number" +} - removed
Output schema / properties / kind / enumRemoved value: -[ - "validation", - "business", - "platform", - "unknown" -]
- Removed
dynamoi_list_media_assets - Changed
dynamoi_preview_smart_link_themes6 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / data / properties / artistNameAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / releaseTitleAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / themesAdded value: +{ + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "publicUrl": { + "type": "string" + }, + "summary": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / data / requiredAdded value: +[ + "artistName", + "releaseTitle", + "themes" +] - removed
Output schema / properties / kind / enumRemoved value: -[ - "validation", - "business", - "platform", - "unknown" -]
- Changed
dynamoi_search6 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / data / properties / nextCursorAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / resultsAdded value: +{ + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "publicUrl": { + "type": "string" + }, + "summary": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / data / properties / summaryAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / totalCountAdded value: +{ + "type": "number" +} - removed
Output schema / properties / kind / enumRemoved value: -[ - "validation", - "business", - "platform", - "unknown" -]
- Removed
dynamoi_start_meta_connection - Removed
dynamoi_start_youtube_channel_link - Removed
dynamoi_update_campaign - Changed
dynamoi_update_smart_link11 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / data / properties / artistIdAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / artistNameAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / defaultThemeAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / idAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / nameAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / publicUrlAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / renderQueuedCountAdded value: +{ + "type": "number" +} - added
Output schema / properties / data / properties / renderWarningAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / data / properties / summaryAdded value: +{ + "type": "string" +} - removed
Output schema / properties / kind / enumRemoved value: -[ - "validation", - "business", - "platform", - "unknown" -]
- Changed
fetch6 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / data / properties / idAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / nameAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / publicUrlAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / summaryAdded value: +{ + "type": "string" +} - removed
Output schema / properties / kind / enumRemoved value: -[ - "validation", - "business", - "platform", - "unknown" -]
- Changed
search3 fields changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Output schema / properties / data / properties / resultsAdded value: +{ + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "publicUrl": { + "type": "string" + }, + "summary": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / kind / enumRemoved value: -[ - "validation", - "business", - "platform", - "unknown" -]
4 tool updates
- Added
dynamoi_apply_for_distribution - Added
dynamoi_get_distribution_application - Changed
dynamoi_start_meta_connection1 field changed- added
Input schema / properties / purposeAdded value: +{ + "enum": [ + "advertising", + "distribution_identity" + ], + "type": "string" +}
- Changed
dynamoi_start_youtube_channel_link1 field changed- added
Input schema / properties / purposeAdded value: +{ + "enum": [ + "advertising", + "distribution_identity" + ], + "type": "string" +}
23 tool updates
- Changed
dynamoi_create_smart_link_from_spotify5 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": false, + "properties": { + "actionRequired": { + "items": { + "type": "string" + }, + "type": "array" + }, + "artistHubUrl": { + "type": "string" + }, + "artistId": { + "type": "string" + }, + "artistName": { + "type": "string" + }, + "claimStatus": { + "enum": [ + "auto_approved", + "pending_ops_review", + "verification_deferred", + "approved_by_ops", + "rejected" + ], + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "customDescription": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + }, + "isPublic": { + "type": "boolean" + }, + "localizedPublicUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "nextActions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "odesliStatus": { + "enum": [ + "pending", + "resolved", + "failed" + ], + "type": "string" + }, + "originalSpotifyUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "outcome": { + "enum": [ + "created", + "existing" + ], + "type": "string" + }, + "publicUrl": { + "type": "string" + }, + "publishState": { + "enum": [ + "published", + "unpublished" + ], + "type": "string" + }, + "releaseSlug": { + "type": "string" + }, + "releaseTitle": { + "type": "string" + }, + "releaseType": { + "type": "string" + }, + "renderState": { + "enum": [ + "queued", + "rendering", + "rendered", + "failed" + ], + "type": "string" + }, + "spotifyUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "summary": { + "type": "string" + }, + "takedownStatus": { + "enum": [ + "none", + "active", + "resolved" + ], + "type": "string" + }, + "theme": { + "enum": [ + "classic", + "brutalist", + "aurora", + "cinematic" + ], + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "warnings": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workflowWarning": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "artistHubUrl", + "artistId", + "artistName", + "claimStatus", + "createdAt", + "id", + "isPublic", + "odesliStatus", + "publicUrl", + "publishState", + "releaseSlug", + "releaseTitle", + "releaseType", + "renderState", + "spotifyUrl", + "takedownStatus", + "theme", + "updatedAt", + "customDescription", + "nextActions", + "originalSpotifyUrl", + "summary", + "outcome", + "workflowWarning" + ], + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +} - changed
Output schema / properties / status / enumPrevious value: -[ - "success", - "partial_success", - "error" -]New value: +[ + "success", + "error" +]
- Changed
dynamoi_create_smart_links_from_spotify_artist5 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": false, + "properties": { + "artistCreatedFromSpotify": { + "type": "boolean" + }, + "artistHubUrl": { + "type": "string" + }, + "artistId": { + "type": "string" + }, + "artistName": { + "type": "string" + }, + "catalogImportStatus": { + "enum": [ + "started", + "start_failed" + ], + "type": "string" + }, + "currentSmartLinkCount": { + "type": "number" + }, + "existingCount": { + "type": "number" + }, + "initialSmartLink": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "artistHubUrl": { + "type": "string" + }, + "artistId": { + "type": "string" + }, + "artistName": { + "type": "string" + }, + "claimStatus": { + "enum": [ + "auto_approved", + "pending_ops_review", + "verification_deferred", + "approved_by_ops", + "rejected" + ], + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "id": { + "type": "string" + }, + "isPublic": { + "type": "boolean" + }, + "localizedPublicUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "odesliStatus": { + "enum": [ + "pending", + "resolved", + "failed" + ], + "type": "string" + }, + "publicUrl": { + "type": "string" + }, + "publishState": { + "enum": [ + "published", + "unpublished" + ], + "type": "string" + }, + "releaseSlug": { + "type": "string" + }, + "releaseTitle": { + "type": "string" + }, + "releaseType": { + "type": "string" + }, + "renderState": { + "enum": [ + "queued", + "rendering", + "rendered", + "failed" + ], + "type": "string" + }, + "spotifyUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "takedownStatus": { + "enum": [ + "none", + "active", + "resolved" + ], + "type": "string" + }, + "theme": { + "enum": [ + "classic", + "brutalist", + "aurora", + "cinematic" + ], + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "artistHubUrl", + "artistId", + "artistName", + "claimStatus", + "createdAt", + "id", + "isPublic", + "odesliStatus", + "publicUrl", + "publishState", + "releaseSlug", + "releaseTitle", + "releaseType", + "renderState", + "spotifyUrl", + "takedownStatus", + "theme", + "updatedAt" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "newlyAvailableCount": { + "type": "number" + }, + "nextActions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "smartLinks": { + "items": { + "additionalProperties": false, + "properties": { + "artistHubUrl": { + "type": "string" + }, + "artistId": { + "type": "string" + }, + "artistName": { + "type": "string" + }, + "claimStatus": { + "enum": [ + "auto_approved", + "pending_ops_review", + "verification_deferred", + "approved_by_ops", + "rejected" + ], + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "id": { + "type": "string" + }, + "isPublic": { + "type": "boolean" + }, + "localizedPublicUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "odesliStatus": { + "enum": [ + "pending", + "resolved", + "failed" + ], + "type": "string" + }, + "publicUrl": { + "type": "string" + }, + "publishState": { + "enum": [ + "published", + "unpublished" + ], + "type": "string" + }, + "releaseSlug": { + "type": "string" + }, + "releaseTitle": { + "type": "string" + }, + "releaseType": { + "type": "string" + }, + "renderState": { + "enum": [ + "queued", + "rendering", + "rendered", + "failed" + ], + "type": "string" + }, + "spotifyUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "takedownStatus": { + "enum": [ + "none", + "active", + "resolved" + ], + "type": "string" + }, + "theme": { + "enum": [ + "classic", + "brutalist", + "aurora", + "cinematic" + ], + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "artistHubUrl", + "artistId", + "artistName", + "claimStatus", + "createdAt", + "id", + "isPublic", + "odesliStatus", + "publicUrl", + "publishState", + "releaseSlug", + "releaseTitle", + "releaseType", + "renderState", + "spotifyUrl", + "takedownStatus", + "theme", + "updatedAt" + ], + "type": "object" + }, + "type": "array" + }, + "spotifyArtistUrl": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "warnings": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "artistHubUrl", + "artistId", + "artistName", + "catalogImportStatus", + "currentSmartLinkCount", + "existingCount", + "initialSmartLink", + "newlyAvailableCount", + "nextActions", + "smartLinks", + "spotifyArtistUrl", + "summary" + ], + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +} - changed
Output schema / properties / status / enumPrevious value: -[ - "success", - "partial_success", - "error" -]New value: +[ + "success", + "error" +]
- Changed
dynamoi_get_account_overview4 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +}
- Changed
dynamoi_get_artist_analytics4 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +}
- Changed
dynamoi_get_billing4 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +}
- Changed
dynamoi_get_campaign4 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +}
- Changed
dynamoi_get_campaign_readiness5 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "artistId": { + "type": "string" + }, + "artistName": { + "type": "string" + }, + "blockingIssues": { + "items": { + "type": "string" + }, + "type": "array" + }, + "campaignType": { + "enum": [ + "SMART_CAMPAIGN", + "YOUTUBE" + ], + "type": "string" + }, + "isReady": { + "type": "boolean" + }, + "missingInputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "normalizedTargeting": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "GLOBAL", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "countries": { + "items": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "code", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "mode": { + "const": "COUNTRIES", + "type": "string" + } + }, + "required": [ + "countries", + "mode" + ], + "type": "object" + } + ] + }, + "recommendedNextAction": { + "type": "string" + }, + "warnings": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "artistId", + "artistName", + "blockingIssues", + "campaignType", + "isReady", + "missingInputs", + "normalizedTargeting", + "recommendedNextAction", + "warnings" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "actionRequired": { + "items": { + "type": "string" + }, + "type": "array" + }, + "summary": { + "type": "string" + }, + "warnings": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "summary" + ], + "type": "object" + } + ] +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +} - changed
Output schema / properties / status / enumPrevious value: -[ - "success", - "partial_success", - "error" -]New value: +[ + "success", + "error" +]
- Changed
dynamoi_get_platform_status4 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +}
- Changed
dynamoi_get_smart_link4 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +}
- Changed
dynamoi_launch_campaign5 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": false, + "properties": { + "budget": { + "additionalProperties": false, + "properties": { + "amountUsd": { + "type": "number" + }, + "formatted": { + "type": "string" + } + }, + "required": [ + "amountUsd", + "formatted" + ], + "type": "object" + }, + "budgetType": { + "enum": [ + "DAILY", + "TOTAL" + ], + "type": "string" + }, + "campaignType": { + "enum": [ + "SMART_CAMPAIGN", + "YOUTUBE" + ], + "type": "string" + }, + "contentTitle": { + "type": "string" + }, + "deliveryState": { + "enum": [ + "ACTIVE", + "PENDING_REVIEW", + "CONTENT_VALIDATION" + ], + "type": "string" + }, + "id": { + "type": "string" + }, + "isLive": { + "type": "boolean" + }, + "nextSteps": { + "items": { + "type": "string" + }, + "type": "array" + }, + "platforms": { + "items": { + "type": "string" + }, + "type": "array" + }, + "status": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "warnings": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "budget", + "budgetType", + "campaignType", + "contentTitle", + "deliveryState", + "id", + "isLive", + "nextSteps", + "platforms", + "status", + "summary" + ], + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +} - changed
Output schema / properties / status / enumPrevious value: -[ - "success", - "partial_success", - "error" -]New value: +[ + "success", + "error" +]
- Changed
dynamoi_list_artists4 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +}
- Changed
dynamoi_list_available_countries5 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "campaignType": { + "enum": [ + "SMART_CAMPAIGN", + "YOUTUBE" + ], + "type": "string" + }, + "countries": { + "items": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "dominantLanguage": { + "type": "string" + }, + "googleAdsId": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "required": [ + "code", + "googleAdsId", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "nextCursor": { + "type": "string" + }, + "notes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "source": { + "enum": [ + "SMART_CAMPAIGN_COUNTRIES", + "GOOGLE_ADS_COUNTRIES" + ], + "type": "string" + }, + "totalCount": { + "type": "number" + } + }, + "required": [ + "campaignType", + "countries", + "notes", + "source", + "totalCount" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "nextCursor": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "totalCount": { + "type": "number" + } + }, + "required": [ + "summary", + "totalCount" + ], + "type": "object" + } + ] +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +} - changed
Output schema / properties / status / enumPrevious value: -[ - "success", - "partial_success", - "error" -]New value: +[ + "success", + "error" +]
- Changed
dynamoi_list_campaigns4 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +}
- Changed
dynamoi_list_media_assets5 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "assets": { + "items": { + "additionalProperties": false, + "properties": { + "aspectRatio": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "fileType": { + "type": "string" + }, + "height": { + "type": "number" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "urlExpiresAt": { + "type": "string" + }, + "width": { + "type": "number" + } + }, + "required": [ + "createdAt", + "fileType", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "nextCursor": { + "type": "string" + } + }, + "required": [ + "assets" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "nextCursor": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "totalCount": { + "type": "number" + } + }, + "required": [ + "summary", + "totalCount" + ], + "type": "object" + } + ] +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +} - changed
Output schema / properties / status / enumPrevious value: -[ - "success", - "partial_success", - "error" -]New value: +[ + "success", + "error" +]
- Changed
dynamoi_list_smart_links5 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "nextCursor": { + "type": "string" + }, + "smartLinks": { + "items": { + "additionalProperties": false, + "properties": { + "artistHubUrl": { + "type": "string" + }, + "artistId": { + "type": "string" + }, + "artistName": { + "type": "string" + }, + "claimStatus": { + "enum": [ + "auto_approved", + "pending_ops_review", + "verification_deferred", + "approved_by_ops", + "rejected" + ], + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "id": { + "type": "string" + }, + "isPublic": { + "type": "boolean" + }, + "localizedPublicUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "odesliStatus": { + "enum": [ + "pending", + "resolved", + "failed" + ], + "type": "string" + }, + "publicUrl": { + "type": "string" + }, + "publishState": { + "enum": [ + "published", + "unpublished" + ], + "type": "string" + }, + "releaseSlug": { + "type": "string" + }, + "releaseTitle": { + "type": "string" + }, + "releaseType": { + "type": "string" + }, + "renderState": { + "enum": [ + "queued", + "rendering", + "rendered", + "failed" + ], + "type": "string" + }, + "spotifyUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "takedownStatus": { + "enum": [ + "none", + "active", + "resolved" + ], + "type": "string" + }, + "theme": { + "enum": [ + "classic", + "brutalist", + "aurora", + "cinematic" + ], + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "artistHubUrl", + "artistId", + "artistName", + "claimStatus", + "createdAt", + "id", + "isPublic", + "odesliStatus", + "publicUrl", + "publishState", + "releaseSlug", + "releaseTitle", + "releaseType", + "renderState", + "spotifyUrl", + "takedownStatus", + "theme", + "updatedAt" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "smartLinks" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "nextCursor": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "totalCount": { + "type": "number" + } + }, + "required": [ + "summary", + "totalCount" + ], + "type": "object" + } + ] +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +} - changed
Output schema / properties / status / enumPrevious value: -[ - "success", - "partial_success", - "error" -]New value: +[ + "success", + "error" +]
- Changed
dynamoi_preview_smart_link_themes4 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +}
- Changed
dynamoi_search4 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +}
- Changed
dynamoi_start_meta_connection4 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +}
- Changed
dynamoi_start_youtube_channel_link4 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +}
- Changed
dynamoi_update_campaign4 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +}
- Changed
dynamoi_update_smart_link4 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +}
- Changed
fetch4 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +}
- Changed
search4 fields changed- changed
Output schema / additionalPropertiesPrevious value: -{}New value: +false - added
Output schema / properties / dataAdded value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +} - added
Output schema / properties / kindAdded value: +{ + "enum": [ + "validation", + "business", + "platform", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +}
1 tool update
- Changed
dynamoi_update_campaign3 fields changed- added
Input schema / properties / acceptedConsentCopyHashAdded value: +{ + "const": "36efa2138175fe14ec7b104d6f240bdce89d21b86ffccbd9f968100c50123e15", + "type": "string" +} - added
Input schema / properties / acceptedConsentVersionAdded value: +{ + "const": "managed-ads-prospective-daily-v1", + "type": "string" +} - added
Input schema / properties / authorizeAutomaticDailyFundingAdded value: +{ + "const": true, + "description": "Set only after the client explicitly accepts: “Authorize automatic card funding for this campaign's requested approximately 24-hour daily budget.”", + "type": "boolean" +}
1 tool update
- Added
dynamoi_preview_smart_link_themes
1 tool update
- Changed
dynamoi_update_smart_link2 fields changed- changed
Input schema / properties / action / enumPrevious value: -[ - "update_description", - "update_artist_settings", - "publish", - "unpublish" -]New value: +[ + "update_description", + "update_artist_settings" +] - removed
Input schema / properties / expectedPublishStateRemoved value: -{ - "enum": [ - "published", - "unpublished" - ], - "type": "string" -}
2 tool updates
- Changed
dynamoi_get_smart_link3 fields changed- removed
Input schema / properties / includeRemoved value: -{ - "items": { - "enum": [ - "analytics", - "artist_settings" - ], - "type": "string" - }, - "maxItems": 2, - "type": "array" -} - added
Input schema / properties / includeAnalyticsAdded value: +{ + "type": "boolean" +} - added
Input schema / properties / includeArtistSettingsAdded value: +{ + "type": "boolean" +}
- Changed
dynamoi_list_campaigns1 field changed- added
Input schema / properties / status / enumAdded value: +[ + "AWAITING_SMART_LINK", + "ACTIVE", + "ARCHIVED", + "CONTENT_VALIDATION", + "DEPLOYING", + "FAILED", + "PAUSED", + "READY_FOR_REVIEW", + "SUBSCRIPTION_PAUSED" +]
Related MCP Connectors
Music promo platform: email campaigns, Instagram DMs, Spotify discovery, SmartLinks, analytics.
Analyze tracks and manage customer music-promotion workflows through your DropTrack account.
Create and track AI music videos and audio-reactive visuals from songs.
Spotify: Spotify Data API for Millions of songs & podcasts, artists, albums, playlists and more.
Related MCP Servers
- AlicenseAqualityAmaintenanceCross-platform music link resolution for AI agents. Resolve any song or album across Spotify, Apple Music, Amazon, YouTube, and more. Returns affiliate-ready links with click tracking5162 npm3MIT
- AlicenseNot gradedqualityBmaintenanceEnables musicians and their agents to manage AI licensing, register tracks by ISRC, issue/revoke licences, access compliance audit trails, and run their artist platform (merch, events, subscriptions, crowdfunding) through natural language with 46 tools.19 npm1-
- AlicenseAqualityDmaintenanceGenerate styled QR codes, manage dynamic short links with click analytics, and publish micro-landing pages via AI agents.1935 npm1MIT
- AlicenseNot gradedqualityCmaintenancePrivacy-first audio intelligence: BPM, key, waveform. Audio never stored. Pay per second.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.