Dynamoi
REMOTE · DYNAMOI.COM
Music promotion and distribution for AI agents: Spotify and YouTube ads, Smart Links, releases.
Available components
Last scanned (8 hours ago)
Scores higher than 99% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Marketing and SEO
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security100
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
- The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability72
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 10095 tokens (~186/item across 54 items; 51 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage72
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 1% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 51 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 53 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
- Supports UI / widget rendering.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 0
- Tool “dynamoi_get_campaign_readiness” rewrote its description, which is the text the model reads security
- New tool “dynamoi_list_campaign_drafts” functional
- “dynamoi_contact_support” added an optional parameter “requestId” cosmetic
- 4 Nov 26 0
- Tool “dynamoi_get_campaign_readiness” rewrote its description, which is the text the model reads security
- Tool “dynamoi_manage_youtube_draft” rewrote its description, which is the text the model reads security
- Tool “dynamoi_get_billing” rewrote its description, which is the text the model reads security
- Server version: 1.0.9 → 1.0.10 functional
- 3 Nov 26 +1
- Stability: fail → pass ▲ security
- The server rewrote its instructions, which are the text every model session reads security
- New tool “dynamoi_manage_smart_campaign_creative”, which the server declares destructive security
- New tool “dynamoi_manage_team”, which the server declares destructive security
- New tool “dynamoi_manage_youtube_draft”, which the server declares destructive security
- New tool “dynamoi_onboard_artist”, which the server declares destructive security
- New tool “dynamoi_prepare_distribution_release”, which the server declares destructive security
- New tool “dynamoi_smart_campaign_ad_copy”, which the server declares destructive security
- New tool “dynamoi_smart_link_controls”, which the server declares destructive security
- New tool “dynamoi_start_meta_connection”, which the server declares destructive security
- New tool “dynamoi_start_youtube_channel_link”, which the server declares destructive security
- New tool “dynamoi_update_account_profile”, which the server declares destructive security
- New tool “dynamoi_update_smart_link”, which the server declares destructive security
- New tool “dynamoi_update_smart_link_artist_hub_settings”, which the server declares destructive security
- New tool “dynamoi_update_smart_link_release_settings”, which the server declares destructive security
- New tool “dynamoi_claim_referral_code”, which the server declares destructive security
- New tool “dynamoi_contact_support”, which the server declares destructive security
- Tool “dynamoi_apply_for_distribution” is now declared destructive security
- Tool “dynamoi_create_smart_links_from_spotify_artist” is now declared destructive security
- Schema quality: 5308 → 9955 ▼ functional
- Server version: 1.0.8 → 1.0.9 functional
- New tool “dynamoi_get_artist_billing_country” functional
- New tool “dynamoi_get_audit_log” functional
- New tool “dynamoi_get_billing” functional
- New tool “dynamoi_get_campaign_readiness” functional
- New tool “dynamoi_get_distribution_status” functional
- New tool “dynamoi_get_earnings” functional
- New tool “dynamoi_get_referrals” functional
- New tool “dynamoi_get_team” functional
- New tool “dynamoi_list_available_countries” functional
- New tool “dynamoi_list_media_assets” functional
- New tool “dynamoi_get_action_center” functional
- 31 Oct 26 0
- Server version: 1.0.7 → 1.0.8 functional
- 22 Oct 26 0
- Server version: 1.0.6 → 1.0.7 functional
- Server version: 1.0.5 → 1.0.6 functional
- 21 Oct 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “dynamoi_get_youtube_channel_data” rewrote its description, which is the text the model reads security
- Tool “dynamoi_about” rewrote its description, which is the text the model reads security
- Tool “dynamoi_create_smart_link_from_spotify” rewrote its description, which is the text the model reads security
- Tool “dynamoi_get_account_overview” rewrote its description, which is the text the model reads security
- Tool “dynamoi_get_artist_analytics” rewrote its description, which is the text the model reads security
- Tool “dynamoi_get_distribution_application” rewrote its description, which is the text the model reads security
- Server version: 1.0.4 → 1.0.5 functional
- Server version: 1.0.2 → 1.0.4 functional
- 20 Oct 26 0
- Tool “dynamoi_get_youtube_channel_data” rewrote its description, which is the text the model reads security
- 15 Oct 26 0
- Server version: 1.0.1 → 1.0.2 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://dynamoi.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=dynamoi.com | CN=WE1,O=Google Trust Services,C=US | 25 Oct 2026 | 23 Jan 2027 | ECDSA 256 | ECDSA-SHA256 | b9254416ab298d691394ba16bbc651ab |
| SANs: dynamoi.com, play.dynamoi.com, *.play.dynamoi.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of dynamoi.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| dynamoi.com. | present | 2371 | 13 | Verified |
| dynamoi.com. | Verified address RRset verified with the apex keys |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://dynamoi.com/.well-known/oauth-protected-resource/mcp", scope="dynamoi:read dynamoi:platform.write dynamoi:billing.read dynamoi:platform.read dynamoi:distribution.read dynamoi:campaign.write dynamoi:distribution.apply dynamoi:smart_links.write"
Bearer resource_metadata="https://dynamoi.com/.well-known/oauth-protected-resource/mcp", scope="dynamoi:read dynamoi:platform.write dynamoi:billing.read dynamoi:platform.read dynamoi:distribution.read dynamoi:campaign.write dynamoi:distribution.apply dynamoi:smart_links.write" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| content-security-policy | default-src 'self'; script-src 'self' 'unsafe-inline' https://dynamoi.com https://*.posthog.com https://*.facebook.com https://*.facebook.net https://www.redditstatic.com https://bat.bing.com https://www.googletagmanager.com https://googleads.g.doubleclick.net https://*.vercel-scripts.com https://analytics.ahrefs.com https://static.cloudflareinsights.com https://bzrcdn.openai.com https://accounts.google.com/gsi/client; worker-src 'self' blob:; style-src 'self' 'unsafe-inline' https://accounts.google.com/gsi/style; img-src 'self' blob: data: https://*.posthog.com https://*.bing.com https://*.googleusercontent.com https://*.google.com https://google.com https://googleads.g.doubleclick.net https://*.scdn.co https://*.spotifycdn.com https://assets.soundcharts.com https://*.mzstatic.com https://*.facebook.com https://*.facebook.net https://*.fbcdn.net https://*.fbsbx.com https://*.cdninstagram.com https://*.instagram.com https://*.googletagmanager.com https://*.ytimg.com https://www.redditstatic.com https://alb.re |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=(), interest-cohort=() |
Protected resource metadata
| Document | https://dynamoi.com/.well-known/oauth-protected-resource/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://dynamoi.com/mcp |
| Authorisation server | https://dynamoi.com/api/auth |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://dynamoi.com/mcp | Verified | 200 | |
| http (plaintext) | http://dynamoi.com/mcp | HTTPS enforced | 301 | https://dynamoi.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
dynamoi_manage_smart_campaign_creative Manage Smart Campaign Draft Creative ~927
Use save_setup with setupSave={playLinkId, appleMusicUrl?} and a stable UUID-v4 setupRequestId per setup flow; reuse it on retries, and start a new flow for different content. It returns setupDraft. Use read_budget for budgetDraft and save_budget with budgetSave={campaignId, expectedUpdatedAt, budgetAmountCents, budgetAmountMinor?, currency?, budgetType:DAILY|TOTAL, endDate:YYYY-MM-DD|null}. Amounts are exact minor units in the artist currency; use the budget policy from read_budget. Setup and budget saves only edit drafts and never launch or charge. Use read_location to read native draft targeting and save_location with locationSave={campaignId, expectedUpdatedAt, targeting:{mode:WORLDWIDE}|{mode:INCLUDE,countryCodes:[US]}} to save it. Read locationDraft first for the current revision; both location actions return locationDraft. Read generation progress, generated creatives and current selection with action=read. To discover owned social posts, explicitly add catalog={source:facebook|instagram,limit:1..25,after?:nextCursor}. Only requested catalog reads fetch connected-account posts; use catalog.items[].id directly in selectedSocialPosts. Pass nextCursor as after for another page. Catalog reads never alter selections, token state, or campaigns; provider failure is an error, and selection revalidates ownership. Use start_generation, retry_generation or clear_generation with campaignId and expectedUpdatedAt from read. Generation runs asynchronously; poll with read. Use source_audio_upload_status or abort_source_audio_upload with campaignId, expectedUpdatedAt, uploadId and uploadSessionId to inspect uploaded parts or abort the direct upload. Agents never approve or submit. Use action=select with campaignId and expectedUpdatedAt from read, source=generate|posts|upload, and selectedCreativeIds, selectedSocialPosts (owned META:post IDs), or uploadedAssets=[{mediaAssetId}] from dynamoi_list_media_assets. Omit selectedCreativeIds for social or uploaded media. Uploaded met…
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| artistId | string | yes | – |
| budgetSave | object | – | – |
| campaignId | string | – | – |
| catalog | object | – | – |
| expectedUpdatedAt | string | – | – |
| fileSizeBytes | integer | – | – |
| hookSeconds | array | – | – |
| locationSave | object | – | – |
| mediaUpload | object | – | – |
| parts | array | – | – |
| selectedCreativeIds | array | – | – |
| selectedSocialPosts | array | – | – |
| setupRequestId | string | – | – |
| setupSave | object | – | – |
| source | string | – | – |
| trackDurationSeconds | number | – | – |
| uploadId | string | – | – |
| uploadSessionId | string | – | – |
| uploadedAssets | array | – | – |
| url | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
dynamoi_manage_team Manage Organization Members ~102
Change an organization member's role, remove a member or revoke a pending organization invitation using the same authority and transactional protections as web. targetId is the organization membership or pending invitation row ID from dynamoi_get_team. Owner and last-admin protections apply; removal can revoke access and pending invitations.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| role | string | – | – |
| targetId | string | yes | Organization membership or pending invitation row ID from dynamoi_get_team. |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
dynamoi_manage_youtube_draft Manage YouTube Draft ~332
Editor access required. Returns the current draft summary in data and the native operation response in stepResult. Read native setup with setup, browse videos with videos and optional pageToken, screen with screen and videoId. Save draft steps with save_content/contentSave={campaignId,videoId,playlistId,strategy}, save_location/locationSave={campaignId,targeting:{mode:GLOBAL}|{mode:COUNTRIES,countries:[US]}}, save_ad_copy/adCopySave={campaignId,adCopy,mode:assisted|preserve}, or save_budget/budgetSave={campaignId,budgetAmountCents,budgetType,endDate,currency?,budgetAmountMinor?}. Amounts are exact minor units in the artist currency; use the setup budget policy. Reuse the campaignId when retrying. Saves use native last-write-wins semantics; re-read setup after ambiguous outcomes. Draft saves never launch, change live campaigns or call Google Ads; launch is a separate step. Inspect a recoverable draft with inspect. Use discard only on explicit user request with campaignId, expectedUpdatedAt from inspect and userIntentSummary. Discard cannot be undone.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| adCopySave | object | – | – |
| artistId | string | yes | – |
| budgetSave | object | – | – |
| campaignId | string | – | – |
| contentSave | object | – | – |
| expectedUpdatedAt | string | – | – |
| locationSave | object | – | – |
| pageToken | – | – | – |
| userIntentSummary | string | – | – |
| videoId | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | – | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
| stepResult | object | – | – |
No examples provided.
dynamoi_onboard_artist Find and Onboard an Artist ~119
Search Spotify artists by query, preview a Spotify artist URL, or intake an artist from a Spotify or YouTube URL. Intake creates a workspace and starts onboarding using web organization policy; organizationId selects an editable organization. Existing claims, entitlements, caps and provider quotas apply. Sign in through the app or web first.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| countryCode | string | – | – |
| locale | string | – | – |
| organizationId | string | – | – |
| query | string | – | – |
| url | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
dynamoi_open_workspace Open Artist Workspace ~73
Open the read-only Dynamoi workspace when the user wants to browse their existing artists, campaigns, Smart Links and observed results in ChatGPT. Returns an authorized artist roster or an honest empty account state. Does not create links, change campaigns, start purchases or connect accounts. Use individual read tools for follow-up details.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
dynamoi_prepare_distribution_release Prepare Release Handoff ~117
Prepare metadata, tracks and proposed splits for artist review in a private expiring web form. Does not submit a release, attest rights, accept agreements or invite collaborators.
| Name | Type | Req | Description |
|---|---|---|---|
| artistId | string | yes | – |
| desiredReleaseDate | string | yes | – |
| hasCollaborators | boolean | yes | – |
| labelName | string|null | yes | – |
| notes | string|null | yes | – |
| releaseTitle | string | yes | – |
| releaseType | string | yes | – |
| splits | array | yes | – |
| tracks | array | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
dynamoi_preview_smart_link_themes Preview Smart Link Themes ~91
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 | Type | Req | Description |
|---|---|---|---|
| artistName | string | – | – |
| releaseTitle | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
dynamoi_search Search Dynamoi ~153
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 | Type | Req | Description |
|---|---|---|---|
| artistId | string | – | – |
| cursor | string | – | – |
| format | string | – | – |
| includeArchived | boolean | – | – |
| limit | integer | – | – |
| query | string | – | – |
| type | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
dynamoi_smart_campaign_ad_copy Smart Campaign Ad Copy ~73
Read ad copy for a Smart Campaign creation draft, or save copy by providing save with the revision read. Editor access required. Refuses submitted campaigns. Never launches, submits or publishes.
| Name | Type | Req | Description |
|---|---|---|---|
| artistId | string | yes | – |
| campaignId | string | yes | – |
| save | object | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
dynamoi_smart_link_controls Smart Link Controls ~179
Sync the native catalog, change artist-wide Smart Link availability, replace tracking IDs, or record a promote request. Confirm the requested change first. Disabling requires confirmedArtistName matching the artist name. Tracking requires all three IDs (null clears) and forwards expectedVersion from artistHub.version. Availability is unversioned. Catalog sync retains native cooldowns. Promote request requires playLinkId; it only records the native platform analytics event, sends no message and starts no paid work. Omitted platform uses the native default (iOS).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| artistId | string | yes | – |
| confirmedArtistName | string | – | – |
| expectedVersion | string | – | – |
| isEnabled | boolean | – | – |
| platform | – | – | – |
| playLinkId | string | – | – |
| tracking | object | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
dynamoi_start_meta_connection Start Meta Connection ~180
Use this when the user is ready to connect a Facebook Page and Instagram professional account to one Dynamoi artist. Set purpose=distribution_identity for the least-privilege identity connection required by a distribution application; that flow does not require advertising billing, and its result is checked with dynamoi_get_distribution_application. Use purpose=advertising (the default) for Spotify Smart Campaigns; advertising requires active billing and is checked with dynamoi_get_platform_status until platforms.meta.status is oauth_complete, partnership_pending, or partnership_active. Advertising returns billing_required when inactive and billing_check_unavailable for a transient verification failure. This returns a signed Meta OAuth URL and may include a Page/Instagram selection step.
| Name | Type | Req | Description |
|---|---|---|---|
| artistId | string | yes | – |
| format | string | – | – |
| purpose | string | – | – |
| userIntentSummary | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
dynamoi_start_youtube_channel_link Start YouTube Channel Link ~163
Use this when the user wants to grow a YouTube channel with Dynamoi campaigns or is ready to link a channel to one Dynamoi artist from chat. Set purpose=distribution_identity for the least-privilege identity connection required by a distribution application; that flow does not require advertising billing or Google Ads linking, and its result is checked with dynamoi_get_distribution_application. Use purpose=advertising (the default) for managed YouTube promotion, then poll dynamoi_get_platform_status until platforms.youtube.connected is true. The tool returns a Google OAuth URL bound to the signed-in user and artist.
| Name | Type | Req | Description |
|---|---|---|---|
| artistId | string | yes | – |
| format | string | – | – |
| purpose | string | – | – |
| userIntentSummary | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
dynamoi_update_account_profile Update Account Profile ~79
Preview a display name or preferred language change. Show the preview and obtain explicit confirmation, then echo the expected current values with confirm=true.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | – |
| expectedName | string|null | – | – |
| expectedPreferredLocale | string|null | – | – |
| name | string | – | – |
| preferredLocale | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
dynamoi_update_smart_link Update Smart Link ~169
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 | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| artistId | string | – | – |
| clientRequestId | string | – | – |
| customDescription | – | – | – |
| expectedUpdatedAt | string | – | – |
| googleAdsConversionId | – | – | – |
| metaPixelId | – | – | – |
| playLinkId | string | – | – |
| theme | string | – | – |
| tiktokPixelId | – | – | – |
| userIntentSummary | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
dynamoi_update_smart_link_artist_hub_settings Update Smart Link Artist Hub Settings ~206
Use this when the user wants to change artist Smart Link theme, pixels, introduction, official profile links or service order. Pass the read artistHub.version as expectedVersion. Omitted fields preserve stored values; null explicitly clears supported fields. Confirm the requested settings before calling. The result includes the saved artistHub readback. If the theme applies but other changes are refused, reload with dynamoi_get_smart_link (artistId, includeArtistSettings=true) before retrying.
| Name | Type | Req | Description |
|---|---|---|---|
| artistId | string | yes | – |
| clientRequestId | string | – | – |
| expectedVersion | string | – | – |
| googleAdsConversionId | – | – | – |
| hubDescription | – | – | – |
| metaPixelId | – | – | – |
| profileLinks | array | – | – |
| servicePriority | array | – | – |
| servicePriorityMode | string | – | – |
| theme | string | – | – |
| tiktokPixelId | – | – | – |
| userIntentSummary | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
dynamoi_update_smart_link_artist_settings Update Smart Link Artist Settings ~128
Use this when the user wants to change artist-level Smart Link theme or validated pixel settings. This tool only changes artist settings; it cannot change a link description or publish or unpublish links. Confirm the requested settings before calling. Theme-only changes switch instantly; pixel changes may queue background rendering.
| Name | Type | Req | Description |
|---|---|---|---|
| artistId | string | yes | – |
| clientRequestId | string | – | – |
| googleAdsConversionId | – | – | – |
| metaPixelId | – | – | – |
| theme | string | – | – |
| tiktokPixelId | – | – | – |
| userIntentSummary | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
dynamoi_update_smart_link_description Update Smart Link Description ~112
Use this when the user wants to update one Smart Link's public description. This tool only changes that link's description; it cannot change artist-level theme or pixel settings and does not publish or unpublish links. Confirm the requested description before calling. A description change may queue background rendering.
| Name | Type | Req | Description |
|---|---|---|---|
| clientRequestId | string | – | – |
| customDescription | – | yes | – |
| expectedUpdatedAt | string | – | – |
| playLinkId | string | yes | – |
| userIntentSummary | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
dynamoi_update_smart_link_release_settings Update Smart Link Release Settings ~203
Use this when the user wants to change one Smart Link's release video or catalog destination visibility. Pass the read version as expectedVersion. Set any of customDescription, youtubeUrl or serviceOverrides; omitted fields preserve stored values and null explicitly clears supported fields. Public availability is artist-wide in the dashboard; this tool does not publish or unpublish individual links. Confirm the requested settings before calling. The result includes the saved releaseSettings readback; after an ambiguous failure, read it with dynamoi_get_smart_link (playLinkId; see releaseSettings) before retrying. A description or video change may queue background rendering.
| Name | Type | Req | Description |
|---|---|---|---|
| clientRequestId | string | – | – |
| customDescription | – | – | – |
| expectedUpdatedAt | string | – | – |
| expectedVersion | string | – | – |
| playLinkId | string | yes | – |
| serviceOverrides | array | – | – |
| userIntentSummary | string | – | – |
| youtubeUrl | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
fetch Fetch (OpenAI Connectors) ~62
OpenAI ChatGPT Deep Research / Connectors fetch contract. Given an id returned by `search` (formatted as 'artist:<uuid>', 'campaign:<uuid>', or 'smartlink:<uuid>'), returns the full record for citation.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
search Search (OpenAI Connectors) ~60
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 | Type | Req | Description |
|---|---|---|---|
| query | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| data | object | – | – |
| draftId | string | – | – |
| failureStage | string | – | – |
| field | string | – | – |
| kind | string | – | – |
| message | string | – | – |
| nextAction | object | – | – |
| prerequisite | string | – | – |
| retryAfterSeconds | integer | – | – |
| retryable | boolean | – | – |
| screeningResult | string | – | – |
| status | string | yes | – |
No examples provided.
How do I install the Dynamoi MCP server?
Dynamoi is a hosted endpoint at https://dynamoi.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · dynamoi.com
claude mcp add --transport http getdynamoi-dynamoi 'https://dynamoi.com/mcp'
What is the Dynamoi MCP server?
Dynamoi is an MCP server listed in the public MCP registry as io.github.getDynamoi/dynamoi. Music promotion and distribution for AI agents: Spotify and YouTube ads, Smart Links, releases. This page covers its hosted endpoint (https://dynamoi.com/mcp).
Is the Dynamoi MCP server safe to use?
Dynamoi scores 93 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Dynamoi MCP server expose?
Dynamoi exposes 51 tools: dynamoi_onboard_artist, dynamoi_get_artist_billing_country, dynamoi_update_account_profile, dynamoi_open_workspace, dynamoi_about, and 46 more. Their descriptions and schemas cost roughly 8,892 tokens of context every time the server is loaded.
Does the Dynamoi MCP server require authentication?
Yes. Dynamoi asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Dynamoi MCP server still maintained?
Dynamoi is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.