# Dynamoi (remote · dynamoi.com)

Promote music on Spotify and grow YouTube channels through AI-powered Meta and Google ad campaigns.

- Trust score: 80/100 (high trust)
- Change this week: +12
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `dynamoi.com`: 80/100 (this document), [markdown](https://verifymcp.io/servers/getdynamoi-dynamoi/dynamoi.md), [page](https://verifymcp.io/servers/getdynamoi-dynamoi/dynamoi)
- npm · `@dynamoi/mcp`: 35/100, [markdown](https://verifymcp.io/servers/getdynamoi-dynamoi/dynamoi-mcp.md), [page](https://verifymcp.io/servers/getdynamoi-dynamoi/dynamoi-mcp)

## Channel facts

- Endpoint: `https://dynamoi.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.4.0`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 100/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - 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.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 68/100
  - 86% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 5492 tokens (~140/item across 39 items; 23 tools + 16 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 72/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 1% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### Claude

```bash
claude mcp add --transport http getdynamoi-dynamoi https://dynamoi.com/mcp
```

### Codex

```toml
[mcp_servers.getdynamoi-dynamoi]
url = "https://dynamoi.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "getdynamoi-dynamoi": {
      "type": "remote",
      "url": "https://dynamoi.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add getdynamoi-dynamoi --url https://dynamoi.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  getdynamoi-dynamoi:
    url: "https://dynamoi.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "getdynamoi-dynamoi": {
      "type": "http",
      "url": "https://dynamoi.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 80, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 78, +8)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 70, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 70, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 68, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 68)

First indexed and scored.

## MCP tools (23)

### `dynamoi_get_account_overview` (~162 tokens)

Get Account Overview

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.

Input parameters:

- `format` (string)
- `intent` (string, required)

Output parameters:

- `status` (string)

### `dynamoi_list_artists` (~173 tokens)

List Artists

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.

Input parameters:

- `artistId` (string)
- `cursor` (string)
- `format` (string)
- `limit` (integer)

Output parameters:

- `status` (string)

### `dynamoi_search` (~153 tokens)

Search Dynamoi

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.

Input parameters:

- `artistId` (string)
- `cursor` (string)
- `format` (string)
- `includeArchived` (boolean)
- `limit` (integer)
- `query` (string)
- `type` (string)

Output parameters:

- `status` (string)

### `search` (~60 tokens)

Search (OpenAI Connectors)

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.

Input parameters:

- `query` (string, required)

Output parameters:

- `status` (string)

### `fetch` (~62 tokens)

Fetch (OpenAI Connectors)

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.

Input parameters:

- `id` (string, required)

Output parameters:

- `status` (string)

### `dynamoi_list_campaigns` (~126 tokens)

List Campaigns

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.

Input parameters:

- `artistId` (string, required)
- `campaignType` (string)
- `cursor` (string)
- `format` (string)
- `limit` (integer)
- `status` (string)

Output parameters:

- `status` (string)

### `dynamoi_get_campaign` (~167 tokens)

Get Campaign

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.

Input parameters:

- `analyticsDateRange` (object)
- `analyticsGranularity` (string)
- `campaignId` (string, required)
- `format` (string)
- `includeAnalytics` (boolean)
- `includeCountries` (boolean)
- `includeDeploymentStatus` (boolean)

Output parameters:

- `status` (string)

### `dynamoi_get_artist_analytics` (~148 tokens)

Get Artist Analytics

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.

Input parameters:

- `artistId` (string, required)
- `dateRange` (object)
- `format` (string)
- `granularity` (string)

Output parameters:

- `status` (string)

### `dynamoi_get_billing` (~124 tokens)

Get Billing

Use this when the user asks about billing state, credit balance, promo limits, subscription status, or whether billing blocks launches for one artist. This is a read-only status check; it does not create checkout links or collect payment. If billing blocks a launch, direct the user to start or restore managed advertising in the Dynamoi dashboard, then call this tool again to confirm the status. Do not use this for campaign analytics or platform connection troubleshooting.

Input parameters:

- `artistId` (string, required)
- `format` (string)
- `onboardingAttemptId` (string)

Output parameters:

- `status` (string)

### `dynamoi_get_platform_status` (~118 tokens)

Get Platform Status

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.

Input parameters:

- `artistId` (string, required)
- `format` (string)
- `onboardingAttemptId` (string)
- `onboardingFlow` (string)

Output parameters:

- `status` (string)

### `dynamoi_list_available_countries` (~93 tokens)

List Available Countries

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

Input parameters:

- `campaignType` (string, required)
- `cursor` (string)
- `format` (string)
- `limit` (integer)
- `query` (string)

Output parameters:

- `status` (string)

### `dynamoi_get_campaign_readiness` (~146 tokens)

Get Campaign Readiness

Use this when the user is planning a campaign and wants to know if the proposed inputs are ready before dynamoi_launch_campaign. This validates readiness and targeting without creating a campaign. Do not use this to create or mutate campaigns.

Input parameters:

- `artistId` (string, required)
- `budgetAmount` (number)
- `budgetType` (string)
- `campaignType` (string, required)
- `contentType` (string)
- `endDate` (string)
- `format` (string)
- `locationTargets` (array)
- `mediaAssetIds` (array)
- `spotifyUrl` (string)
- `youtubeVideoId` (string)

Output parameters:

- `status` (string)

### `dynamoi_start_youtube_channel_link` (~119 tokens)

Start YouTube Channel Link

Use this when the user is ready to link a YouTube channel to one Dynamoi artist from chat. This returns a Google OAuth URL bound to the signed-in user and artist. Google returns to a Dynamoi page that tells the user to come back to the AI assistant; after that, poll dynamoi_get_platform_status with the returned onboardingAttemptId and onboardingFlow=youtube until platforms.youtube.connected is true.

Input parameters:

- `artistId` (string, required)
- `format` (string)
- `userIntentSummary` (string)

Output parameters:

- `status` (string)

### `dynamoi_start_meta_connection` (~162 tokens)

Start Meta Connection

Use this when billing is active and the user is ready to connect Meta for Spotify Smart Campaigns from chat. This returns a signed Meta OAuth URL and may send the user through a Page/Instagram selection step before the chat-first return page. If billing is not active, it returns billing_required instead of an OAuth URL. If billing cannot be verified due to a transient snapshot/API issue, it returns billing_check_unavailable and should be retried shortly. After the user returns, poll dynamoi_get_platform_status with the returned onboardingAttemptId and onboardingFlow=meta until platforms.meta.status is oauth_complete, partnership_pending, or partnership_active.

Input parameters:

- `artistId` (string, required)
- `format` (string)
- `userIntentSummary` (string)

Output parameters:

- `status` (string)

### `dynamoi_update_campaign` (~195 tokens)

Update Campaign

Use this when the user explicitly wants to pause, resume, or update the budget/end date for an existing campaign. Set action to pause, resume, or update_budget. Do not use this for inspection-only questions; this changes live campaign workflow state or external campaign settings.

Input parameters:

- `acceptedConsentCopyHash` (string)
- `acceptedConsentVersion` (string)
- `action` (string, required)
- `authorizeAutomaticDailyFunding` (boolean): Set only after the client explicitly accepts: “Authorize automatic card funding for this campaign's requested approximately 24-hour daily budget.”
- `budgetAmount` (number)
- `campaignId` (string, required)
- `clientRequestId` (string)
- `endDate` (string)
- `expectedCurrentBudgetAmount` (number)
- `expectedCurrentEndDate` (string)
- `expectedCurrentStatus` (string)
- `userIntentSummary` (string)

Output parameters:

- `status` (string)

### `dynamoi_list_media_assets` (~114 tokens)

List Media Assets

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

Input parameters:

- `artistId` (string, required)
- `cursor` (string)
- `format` (string)
- `includeUrls` (boolean)
- `limit` (integer)

Output parameters:

- `status` (string)

### `dynamoi_launch_campaign` (~306 tokens)

Start Campaign Launch Workflow

Use this when the user explicitly wants to create a new Smart Campaign or YouTube Campaign and start the launch workflow with provided details. Ads are not necessarily live until the returned delivery state is ACTIVE. For review or demo Smart Campaign launches that already specify the artist, content title, budget, countries, and reusable media assets, you may omit spotifyUrl and endDate because Dynamoi can infer reviewer-safe defaults. Do not invent placeholder spotifyUrl or endDate values for those review/demo launches; omit them and let Dynamoi infer them. After a successful launch, answer from the returned campaign details directly instead of chaining more tools unless the user explicitly asked for more. Do not use this for recommendations or previews; this creates a real campaign workflow or demo-safe simulated campaign.

Input parameters:

- `adCopy` (string)
- `appleMusicUrl` (string)
- `artistId` (string, required)
- `budgetAmount` (number, required)
- `budgetSplits` (object, required)
- `budgetType` (string, required)
- `campaignType` (string, required)
- `clientRequestId` (string, required)
- `contentTitle` (string, required)
- `contentType` (string, required)
- `endDate` (string)
- `locationTargets` (array)
- `mediaAssetIds` (array)
- `spotifyUrl` (string)
- `useAiGeneratedCopy` (boolean)
- `userIntentSummary` (string)
- `youtubeVideoId` (string)

Output parameters:

- `status` (string)

### `dynamoi_preview_smart_link_themes` (~91 tokens)

Preview Smart Link Themes

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.

Input parameters:

- `artistName` (string)
- `releaseTitle` (string)

Output parameters:

- `status` (string)

### `dynamoi_create_smart_link_from_spotify` (~221 tokens)

Create Free Smart Link from Spotify

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.

Input parameters:

- `artistId` (string, required)
- `clientRequestId` (string)
- `customDescription` (string)
- `format` (string)
- `spotifyUrl` (string, required)
- `userIntentSummary` (string)

Output parameters:

- `status` (string)

### `dynamoi_create_smart_links_from_spotify_artist` (~206 tokens)

Create Free Smart Links for Spotify Artist

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.

Input parameters:

- `artistId` (string)
- `clientRequestId` (string)
- `format` (string)
- `spotifyArtistUrl` (string, required)
- `userIntentSummary` (string)

Output parameters:

- `status` (string)

### `dynamoi_list_smart_links` (~185 tokens)

List Smart Links

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'.

Input parameters:

- `artistId` (string, required)
- `claimStatus` (string)
- `cursor` (string)
- `format` (string)
- `limit` (integer)
- `publishState` (string)
- `query` (string)
- `renderState` (string)

Output parameters:

- `status` (string)

### `dynamoi_get_smart_link` (~165 tokens)

Get Smart Link

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.

Input parameters:

- `artistId` (string)
- `dateRange` (object)
- `format` (string)
- `granularity` (string)
- `includeAnalytics` (boolean)
- `includeArtistSettings` (boolean)
- `includeBreakdowns` (boolean)
- `playLinkId` (string)
- `spotifyUrl` (string)

Output parameters:

- `status` (string)

### `dynamoi_update_smart_link` (~160 tokens)

Update Smart Link

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. Updates may queue background rendering.

Input parameters:

- `action` (string, required)
- `artistId` (string)
- `clientRequestId` (string)
- `customDescription`
- `expectedUpdatedAt` (string)
- `googleAdsConversionId`
- `metaPixelId`
- `playLinkId` (string)
- `theme` (string)
- `tiktokPixelId`
- `userIntentSummary` (string)

Output parameters:

- `status` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/getdynamoi-dynamoi/dynamoi#diagnostics

## Score history

- 2026-08-03: 80
- 2026-08-02: 79
- 2026-08-01: 79
- 2026-07-31: 78
- 2026-07-30: 70
- 2026-07-29: 70
- 2026-07-28: 69
- 2026-07-27: 68
- 2026-07-26: 68

## Links

- Remote endpoint: https://dynamoi.com/mcp
- Repository: https://github.com/getDynamoi/mcp
- Website: https://dynamoi.com/
- Changelog RSS feed: https://verifymcp.io/servers/getdynamoi-dynamoi/dynamoi/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/getdynamoi-dynamoi/dynamoi/changelog.json
- HTML version of this page: https://verifymcp.io/servers/getdynamoi-dynamoi/dynamoi
