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
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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations by explaining the side effect: it 'records an application for manual review' and does not approve distribution, sign agreements, transfer rights, or deliver music. It also adds a nuanced qualifier to the idempotency annotation—'for an active application'—which is valuable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three focused sentences with no filler. It front-loads the core action and condition, then efficiently lists exclusions and requirements. Every sentence adds necessary operational context.
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 (7 required parameters, no schema descriptions, a meaningful approval workflow), the description provides sufficient detail for correct invocation: when to call, which parameters must be present, the side effect, and the non-effects. An output schema exists, so not describing return values is acceptable.
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 carries the parameter-documentation burden. It explains that all three two-letter country codes are required, that adultSignerAttestation is a signer attestation, that confirmApplicationSubmission must be true, and that userIntentSummary should be concise. This meaningfully supplements the bare schema, though artistId is not explicitly described beyond 'artist's application.'
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 ('Submit an artist's application for Dynamoi music distribution') and clearly scopes what the tool does and does not do. It distinguishes itself from related operations like approving, releasing, or configuring splits, making its role unambiguous alongside siblings such as dynamoi_get_distribution_application and dynamoi_launch_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?
It explicitly states the condition for use ('after the user explicitly asks to apply and all five eligibility requirements are met') and gives a clear when-not-to-use list via what it does not do. It does not name alternative sibling tools explicitly, but the behavior boundaries are sufficient for an agent to route correctly.
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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds rich behavioral context beyond annotations: idempotency ('return the existing link instead of creating a duplicate'), verification hold ('may stay unpublished in verification hold'), the fact that it is free and does not create a paid ad campaign, and the update behavior for customDescription. No contradiction with the provided 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?
One focused paragraph front-loads the primary usage rule, then efficiently covers caveats, exceptions, and output handling. Every sentence adds value—no filler or repetition.
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?
Despite the presence of an output schema and annotations, the description covers edge cases (playlists, duplicates, verification hold), non-goals (ad campaign creation), and final answer formatting. It is thorough enough for an agent to select and invoke the tool correctly in varied situations.
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 for explaining parameters. It only clarifies spotifyUrl (album/track/artist URL/URI) and customDescription (updates public description). Required artistId is left unexplained, and format, clientRequestId, and userIntentSummary have no semantic clarification despite non-obvious names.
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+resource ('create one free Dynamoi Smart Link from a Spotify album or track URL/URI') and clearly distinguishes itself from the sibling tool for full-catalog artist imports by naming the alternative. This makes the tool's purpose immediately clear and unique among siblings.
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 states when to use this tool ('Use this when the user wants to create one free...'), when not to use it ('Spotify playlist URLs are not supported today'), and names the preferred alternative for other cases ('For full-catalog artist imports or artist hub requests, prefer dynamoi_create_smart_links_from_spotify_artist').
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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate mutation and destruction, but the description adds crucial context: background catalog import starts without dashboard need, verification hold for high-popularity/unverifiable links, and the instruction to lead with artist hub URL and avoid exposing internal IDs. These details go beyond the annotation hints and help the agent manage user expectations safely.
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 every sentence earns its place: trigger condition, artistId nuance, background behavior, free status, verification hold, ad campaign exclusion, and output guidance. It is not overly verbose, though it could be restructured slightly to separate main actions from caveats.
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 (5 params, background import, verification holds, output responsibilities), the description covers the key operational scenarios, edge cases (unverifiable artists), and interaction requirements (leading with hub URL). The presence of an output schema means return format details are not required, and the description provides sufficient guidance for an agent to invoke and present results 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?
With schema description coverage at 0%, the description needed to explain the parameters. It only meaningfully covers artistId ('omit artistId so Dynamoi can create the first artist'), leaving format, clientRequestId, and userIntentSummary unexplained. While enum values and types are in the schema, the description does not add semantics for these parameters, which is a significant 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 clearly states the tool's function: 'create, import, or refresh free Smart Links for the artist catalog and return the artist hub.' It specifies the resource (Spotify artist catalog) and verb (create/import/refresh), and distinguishes from sibling tools like dynamoi_create_smart_link_from_spotify by referencing the plural 'smart links' and catalog-wide operation.
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...' and gives a specific trigger (user provides Spotify artist URL wanting Dynamoi to create/import/refresh links). It includes conditional guidance (omit artistId if no Dynamoi artist yet), explains background import implications, and explicitly excludes paid ad campaigns, which sets it apart from dynamoi_launch_campaign.
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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | 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 behavior is covered. The description adds useful contextual behavior: account-level state can span multiple artists, making this tool inappropriate for single-artist platform confirmation. It could go further by describing what the returned overview contains, but the output schema likely covers 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?
The description is front-loaded with the core use case, then provides precise exclusions and alternatives. Every sentence earns its place; there is no filler or vague boilerplate.
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 output schema exists, the description does not need to explain return values. It fully covers invocation conditions, required intent behavior, exclusions, and sibling routing, which is complete for a read-only account-overview 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?
Schema description coverage is 0%, so the description must compensate. It does so for the required intent parameter by explaining that it should match the explicit account question, and the prose lists the relevant concerns (organizations, artists, platform connections) that map to the intent enum. The optional format parameter is not discussed, but json/summary are self-explanatory.
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 and resource: it is for explicit questions about the signed-in Dynamoi account itself (who is logged in, organizations/artists accessible, account-level platform connections). It also explicitly distinguishes itself from sibling tools like dynamoi_list_artists and dynamoi_get_platform_status, so there is no ambiguity about what this tool is for.
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 crystal-clear when-to-use guidance and equally clear when-not-to-use guidance. It names the exact alternatives (dynamoi_get_platform_status for artist-specific onboarding, dynamoi_list_artists for enumeration) and explicitly forbids using this tool as a generic context-check before answering unrelated questions.
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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive, so the description doesn't need to restate safety. It adds useful behavioral context: the summary format returns a strongest-campaign verdict and a written rollup, and the tool can produce daily breakdowns. It also tells the agent to stop calling more analytics tools once the comparison is returned. 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?
Every sentence earns its place: purpose, parameter triggers, stop condition, and sibling routing are all included without fluff. The most important scope information is front-loaded. No redundant restatement of the tool name or title.
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 an output schema and read-only annotations, the description covers the key selection logic, parameter triggers, alternative routing, and the stop condition. The main gap is the lack of explicit guidance on dateRange/default behavior, but the schema provides structure and the description mentions 30-day rollups contextually.
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 for parameter meaning. It explains when to set granularity=DAILY and format=summary, which addresses two enum parameters. However, it does not explain dateRange semantics, default values, or what format=json implies beyond what the schema already provides.
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 specific verb and resource: retrieving artist-level performance across all campaigns. It distinguishes itself from the sibling dynamoi_get_campaign, which is for one campaign's metrics. The scope ('across all campaigns') and resource ('artist analytics') are clearly identified.
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 this tool ('artist-level performance across all campaigns') and when to use the alternative ('For one campaign's metrics, use dynamoi_get_campaign'). It also gives concrete parameter instructions for granularity=DAILY and format=summary, plus a stop-and-answer rule after the strongest-campaign comparison is returned.
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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this read-only and non-destructive, and the description adds useful behavioral context beyond that: which optional flags control what data is included, and how format=summary behaves for follow-up reads. It does not explain defaults or detail response behavior, but the output schema and annotations cover the core safety profile.
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, no filler, with the primary purpose front-loaded and conditional guidance following logically. Every sentence 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 description is strong for a read-only single-campaign lookup: it explains scope, filtering flags, alternatives, and a follow-up read mode. Minor gaps remain around analyticsDateRange/analyticsGranularity usage and defaults, but output schema and annotations fill in much of the remaining picture.
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 carries the burden, and it does explain includeAnalytics, includeDeploymentStatus, includeCountries, and format. However, analyticsDateRange and analyticsGranularity are left unexplained and their relationship to includeAnalytics is not clarified.
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 fetches full details for one campaign, including budget, targeting, platform status, and next actions. It also explicitly distinguishes itself from the list alternative, 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?
It provides explicit when-to-use guidance ('when the user wants full details for one campaign') and an explicit when-not-to-use rule with a named alternative ('use dynamoi_list_campaigns instead'). It also gives practical advice about when to prefer format=summary after mutations.
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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyhint and destructiveHinct, the description is narrates the five concrete eligibility checks, states that meeting all five does not guarantee approval, and clarifies that identity connections do not require advertising billing. It accurately confirms the read-only nature behavior and adds important context. No annotation contradiction.
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 most important use signal is front-loaded and each sentence contributes operational guidance. The list of five requirements is somewhat dense, but given the tool's complexity it is not wildly since long. It could be tightened slightly but still earns its 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?
For a tool that checks eligibility and status, the description fully covers when to use it, the five eligibility conditions, the approval caveat, and the fallback routing for missing face/meta or YouTube connections. With an output schema present, no essential behavior is unexplained.
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 description coverage is 0%, so the description was expected to compensate for the lone artistId parameter, but it never mentions that parameter. The property name and UUID format make the vague likely, but the description itself adds no direct semantic guidance about what identifier to pass or where it comes from.
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 begins with 'Use this when the user asks...' and enumerates three specific intents: eligibility, the five requirements, and existing application status. The resource (distribution application) and the action (get/check) are clear, so it cannot be confused with apply_for_distribution.
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 explicit triggers for using the tool and tells the agent what to do instead for missing identity: use another tool with purpose=distribution_identity or route the user to the Dynamo distribution application. This clearly separates it from the sibling connection and application tools.
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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only safety profile. The description adds useful behavioral context: after a connection-start flow, the agent should pass the returned onboardingAttemptId and onboardingFlow so Dynamoi ops can correlate the browser step. 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?
Three sentences with the main use case front-loaded and no filler. The polling instruction and exclusions each earn their 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?
With an output schema present and read-only annotations, the description covers the main selection and invocation concerns, including the non-obvious polling flow. The missing explanation of artistId and format keeps it slightly incomplete.
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 explaining parameters. It adds real meaning for onboardingAttemptId and onboardingFlow, but never explains the required artistId or the format enum, leaving two of four parameters under-specified.
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 reports whether Spotify, Meta, or YouTube are connected and which setup steps block launches. This sharply differentiates it from analytics, smart-link, campaign, and account-overview siblings.
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 explicit 'Use this when...' context, polling guidance with onboarding IDs, and clear exclusions for billing and generic marketing questions. It stops short of naming an alternative tool for those exclusions, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | 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 detail about response presentation (lead with public URL, avoid internal IDs) and optional analytics/theme flags, but does not disclose behavior for ambiguous invocations such as no identifier or conflicting identifiers.
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 focused sentences with no filler; the primary purpose is front-loaded, optional flags are grouped, and the response formatting rule is a single clear instruction. Every sentence 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?
For a 9-parameter tool with no schema descriptions and no required parameters, the description leaves a critical gap: how the agent should identify the target Smart Link (via playLinkId, spotifyUrl, aristsId, or some other route) and what dateRange/granularity/format control. The presence of an output schema helps, but not enough to make the tool safely invocable.
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 for the heavily undocumented parameters. It only explains includeAnalytics and includeArtistSettings, leaving format, artistId, dateRange, playLinkId, spotifyUrl, granularity, and includeBreakdowns unexplained.
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 and resource ('full details for one free Smart Link') and enumerates the returned content: release, Spotify URL, public URL, status, theme source, and next actions. This clearly distinguishes the tool from sibling list/create/update 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?
The opening 'Use this when the user wants full details for one free Smart Link' gives clear selection context, and 'one' differentiates it from list-oriented siblings. However, it does not explicitly mention alternatives or state when not to use 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_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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | 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 safety profile is established. The description adds value beyond that by explaining the roster-vs-profile behavioral split and, notably, the semantic meaning of an empty response (brand-new user, route to recommendedNextActions rather than reporting 'no records found'). 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?
Four sentences, all earning their place: primary use case, artistId variant, exclusion routing, and empty-result behavior. Information is front-loaded with the main purpose first. Slightly dense as one paragraph, but 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?
For a tool with 4 optional params, an output schema, and 15 siblings, the description covers when to use it, what it returns, what it excludes, the artistId variant, and the empty-result edge case. Remaining gaps are minor: no mention of pagination behavior (limit/cursor) or the format enum, though those are optional and conventional.
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 carries the full burden for parameter meaning, but it only addresses artistId ('pass artistId when you need the full profile/readiness details for one artist'). It adds nothing for limit, cursor, or format — pagination semantics and the json/summary distinction are left completely unexplained.
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+resource: listing artists/YouTube channels the user manages, and names the exact fields returned (billing status, active campaign count, role). It distinguishes itself from siblings by naming dynamoi_list_campaigns and dynamoi_get_campaign as the campaign-detail tools, and by contrasting roster-page output with full-profile output.
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?
Explicit when-to-use ('when the user wants to see which artists or YouTube channels they manage'), when-to-pass-artistId, and clear exclusions with named alternatives ('Do not use this for campaign details; use dynamoi_list_campaigns or dynamoi_get_campaign'). It even handles the edge case of an empty result with routing instructions to dynamoi_get_account_overview.recommendedNextActions.
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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | 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 no behavioral detail such as pagination behavior, response format differences, or rate limits; it focuses on selection guidance rather than operational behavior.
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 with a distinct purpose: when to use, what not to use it for, and a prerequisite routing rule. No wasted words, and the primary use case is front-loaded.
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 with an output schema present, the description covers selection criteria, exclusions, and an important prerequisite. The only meaningful gaps are undocumented pagination parameters and the meaning of the 'summary' format, which keep it from being 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?
Schema description coverage is 0%, so the description must compensate. It clarifies the role of artistId, status, and campaignType, but leaves limit, cursor, and format unexplained. The format enum (json vs summary) is especially ambiguous without further context.
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 specific verb ('browse'), a concrete resource ('campaigns for one artist'), and optional filters ('by type or status'). Explicitly distinguishes itself from dynamoi_get_campaign, making the tool's scope immediately identifiable.
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, clear exclusions ('Do not use this for a single campaign deep dive'), names the alternative tool, and even gives a routing prerequisite when the user has no artists yet. This leaves little to inference.
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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, establishing a safe read operation. The description adds behavioral context beyond this: instructs to show public URLs and avoid internal IDs in the final answer, and describes the desired fallback behavior for empty results. 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?
Four sentences, each earning its place: purpose, exclusion, output formatting rule, and empty-case fallback. Front-loaded with the primary action and no filler or repetition.
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 purpose, when-not-to-use, output presentation, and fallback behavior, and an output schema exists. However, with 8 parameters and no parameter descriptions, the lack of explanation for filtering/pagination options leaves some gaps, though the core invocation is clear.
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, but it does not explain any of the 8 parameters beyond implying artistId via 'one artist'. The filter parameters (limit, query, cursor, format, claimStatus, renderState, publishState) are left completely unexplained, offering no added meaning over the raw schema.
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 a specific verb ('list'), resource ('free Smart Links for one artist'), and enumerates returned fields ('release title, public URL, publish state, claim state, render state, and theme'). It explicitly distinguishes from the sibling tool `dynamoi_list_campaigns`, making 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 direct when-to-use guidance ('Use this when the user wants to list free Smart Links for one artist'), an explicit exclusion ('Do not use this for paid campaign lists; use dynamoi_list_campaigns'), and alternative actions when results are empty (suggesting create tools). This is exemplary.
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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false, and the description reinforces this with 'read-only visual preview' and explicit non-actions like 'does not create, publish, update, or promote.' This adds useful context about the tool's non-mutating nature beyond the raw annotation flags, though it does not go into depth about return behavior or edge cases.
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 entire description is a single well-structured sentence that front-loads the use cases and then states exclusions. Every part earns its place, with no filler or redundant phrasing.
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 purpose, usage context, and safety profile, and an output schema exists to explain return values. However, it omits any guidance on the two optional parameters, which are undocumented in the schema as well. This leaves an agent uncertain about whether or how to populate artistName and releaseTitle when invoking the 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?
Schema description coverage is 0%, and the description does not mention artistName or releaseTitle at all. The parameter names are somewhat self-explanatory, but the description fails to explain how these optional parameters affect the preview, what they are used for, or why an agent should supply them. The description needed to compensate for the missing schema descriptions but did not.
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 action ('preview Smart Link themes') and resource, and clarifies it is a visual preview rather than a create/update/publish operation. It clearly distinguishes itself from sibling create/update tools by explicitly listing what it does not do.
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 explicit triggers: when the user asks what themes look like, wants to compare themes, or wants to preview before creating/updating a Smart Link. It also tells the agent when not to use it by stating it does not create, publish, update, or promote a Smart Link, which routes the agent away from this tool for mutation tasks.
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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | 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 description does not need to repeat safety traits. It adds non-obvious behavior: an empty result for a brand-new user should not be treated as a terminal 'no records found' answer, but instead should prompt a suggestion to create the first artist hub. This is useful context beyond the schema.
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 with a distinct purpose: primary use case, exclusion, and empty-result fallback. No fluff and no repetition of schema or annotation information. The most important usage guidance is front-loaded.
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 the central search flow, the key exclusion, and a helpful empty-result edge case, and the output schema supplies return structure. However, it leaves gaps around optional parameters such as format, cursor, and includeArchived, and the 'release' mention does not map cleanly to any type enum value, so an agent may need extra inference for certain searches.
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 carries the burden of explaining the seven parameters, but it only loosely maps the search scenario to 'artist, release, campaign, or smart link'—and 'release' is not one of the type enum values. It does not explain query matching, cursor pagination, the difference between json and summary formats, artistId filtering, or includeArchived, leaving the agent to guess from names and enums.
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 exploratory use: searching when the user mentions an artist, release, campaign, or smart link but the exact record is unknown. It clearly distinguishes from analytics/billing flows by saying not to use it once the target record is known. However, it does not explicitly contrast search with the list_* sibling tools, so some ambiguity remains.
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 gives the trigger condition, states when not to use the tool (analytics summaries or billing questions once the target is known), and provides a concrete alternative for the empty-result case on a brand-new user account by naming dynamoi_create_smart_links_from_spotify_artist. This is strong routing guidance with little left to inference.
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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavioral context beyond annotations: two action modes, artist-wide scoping, no publish/unpublish, and sync vs background rendering. It does not detail destructive consequences despite destructiveHint=true, but annotations already flag that risk.
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?
Tight three sentences: trigger, action values, publishing boundary, and timing behavior. Every sentence earns its place with no repetition of schema content.
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 an 11-parameter, two-mode mutation tool with 0% schema coverage, this description is too thin. An agent cannot reliably know which IDs are required per action or what evidence fields like clientRequestId, expectedUpdatedAt, and userIntentSummary mean, even though an output schema exists.
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 carries the burden. It explains action's enum and the theme/pixel/description concepts, but leaves artistId, playLinkId, pixel IDs, clientRequestId, expectedUpdatedAt, userIntentSummary, and googleAdsConversionId unexplained and does not map parameters per action.
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 explicit use cases: changing a Smart Link's public description or updating artist-level theme/pixel settings. The update role is unambiguous against sibling create/get/list tools, and it explicitly rules out publish/unpublish behavior.
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?
Opens with 'Use this when...' and gives concrete triggers. It excluds publish/unpublish operations and clarifies artist-wide availability, though it does not name exact alternative tools for those cases.
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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile, so the bar for additional disclosure is lower. The description adds modest behavioral context — this is a 'contract' returning 'the full record' as opposed to search snippets — but it does not disclose error behavior, not-found handling, or any response characteristics beyond completeness.
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?
Two sentences with no real waste, and the actionable detail — ID format and return value — is front-loaded in the second sentence. The opening clause ('OpenAI ChatGPT Deep Research / Connectors fetch contract') partially duplicates the title 'Fetch (OpenAI Connectors)', a minor redundancy, but overall the definition is appropriately sized.
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 single-parameter, read-only tool with an output schema present, the description is nearly sufficient: it covers the input format, the source of the id, and the purpose of the return value. The gaps are minor — no statement about what happens when an id is invalid or not found, and no explicit differentiation from the get_* siblings — but nothing critical is missing for basic invocation.
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 bare schema offers only a string with min/max length; the description carries the full burden and largely succeeds. It specifies the exact accepted formats ('artist:<uuid>', 'campaign:<uuid>', 'smartlink:<uuid>') and the parameter's provenance (returned by search), which is precisely what an agent needs to construct a valid call. It stops short of saying whether other prefixes are possible, leaving a small edge-case 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 clearly states the verb (returns), resource (full record), and the precise input contract (id formatted as 'artist:<uuid>', 'campaign:<uuid>', or 'smartlink:<uuid>'). This materially distinguishes fetch as a cross-entity retrieval tool versus the more specific dynamoi_get_campaign, dynamoi_get_smart_link, and other get_* siblings, though it never explicitly names those alternatives.
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 establishes an implicit usage precondition: the id must come from `search`, tying the two tools into a workflow. The phrase 'for citation' hints at the intended downstream use case. However, it gives no explicit when-to-use/when-not-to-use guidance versus the many dynamoi_get_* sibling tools, so an agent must infer the routing decision.
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 |
|---|---|---|
| data | No | |
| kind | No | |
| status | Yes | |
| message | 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 scoping about which entities are searched and why, but it does not clarify search behavior such as fuzzy vs. exact matching or result limits. With annotations covering side effects, a 3 is appropriate.
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, front-loads the tool's purpose and scope, and wastes no words. The alternative-tool mention is placed at the end without diluting the primary message.
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 single-parameter, read-only search tool with an output schema and clear annotations, the description is largely complete. It covers what is searched, why, and which sibling to use instead. It loses a point because it does not address edge cases like empty results or whether queries are partial or exact matches.
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 only defines query as a string with length constraints, and schema description coverage is 0%. The description adds meaning by indicating the query is matched against artists, campaigns, and Smart Links, but it does not explain query format, examples, or matching semantics beyond that.
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 clear verb and resource: it returns matching Dynamoi artists, campaigns, and Smart Links for use in deep-research sessions. It also explicitly distinguishes this tool from dynamoi_search, so an agent can tell them apart 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?
The description gives explicit context: use this tool for OpenAI ChatGPT Deep Research / Connectors sessions, and use dynamoi_search for regular ChatGPT chat. This is a direct when-to-use vs. alternative-tool instruction.
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. Dates show when Glama detected each change.
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" +]
1 tool update
- Changed
dynamoi_list_smart_links1 field changed- changed
Input schema / properties / claimStatus / enumPrevious value: -[ - "auto_approved", - "pending_ops_review", - "approved_by_ops", - "rejected" -]New value: +[ + "auto_approved", + "pending_ops_review", + "verification_deferred", + "approved_by_ops", + "rejected" +]
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
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, manage and measure short links: branded domains, cookie-less analytics and QR codes
Create and track AI music videos and audio-reactive visuals from songs.
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 tracking52523MIT
- 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.111-
- AlicenseNot gradedqualityBmaintenanceEnables managing multi-platform social campaigns from a single blog post, including creating, listing, scheduling, publishing, and retrying campaigns with idempotency and webhook-confirmed delivery.13MIT
- AlicenseAqualityCmaintenanceGenerate styled QR codes, manage dynamic short links with click analytics, and publish micro-landing pages via AI agents.19871MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Most tools are cleanly separated by resource and action, and close pairs like account overview vs platform status and singular vs catalog smart-link creation are explicitly disambiguated. The main ambiguity is dynamoi_search versus the connector search tool, which both search the same entities and are distinguished only by chat vs deep-research context.
The set overwhelmingly follows a consistent dynamoi_<verb>_<object> snake_case pattern, with predictable get/list/create/update verbs. The unprefixed fetch and search connector tools are a visible but small deviation from that convention.
Seventeen tools is slightly heavy for the server's scope, especially since search/fetch partly duplicate dynamoi_search and the campaign domain is primarily read-only. The smart-link, artist, and distribution clusters each justify their tools, so it is not excessively bloated.
Smart links have create/list/get/update coverage and distribution has apply/status, but campaigns are only readable with no create/update/launch tool, despite get_campaign referencing campaign mutations. Platform connections also have status checks but no connect actions, leaving notable workflow gaps.