MCP Endpoint ↑ Top
POST https://harmonicwave.ai/mcp/v1/message
Authorization: Bearer hw_YOUR_API_KEY
MCP protocol compliant. The initialize handshake is supported but not required. You can call tools/list and tools/call directly.
List Available Tools ↑ Top
curl -X POST https://harmonicwave.ai/mcp/v1/message \
-H 'content-type: application/json' \
-H 'Authorization: Bearer hw_YOUR_API_KEY' \
--data '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}'
Returns the tools your API key can use. An API key is required. No initialize required.
Quick Start ↑ Top
# Add MCP server to Claude Code
claude mcp add --transport http harmonic-wave https://harmonicwave.ai/mcp/v1/message \
--header "Authorization: Bearer YOUR_TOKEN"
# Add a media item
manage_content({ action: "create", title: "My Song", content_type: "song", rights_confirmed: true })
# Check your API usage
get_analytics({ days: 7 })
Content Types ↑ Top
Every media item is audio, video, an image or text: That is set from the file at upload and never changes.
The creator also picks what it is: a song, podcast, narration, sound effect, lecture, movie, photo or document.
Status ↑ Top
Experiences and media carry their own status values. They are not the same set.
An experience is:
- Draft: being worked on, not shared yet.
- Published: live, and anyone with the link can play it.
- Private: live for the creator only.
- Paused: temporarily off. The link still resolves; nothing plays.
- Archived: retired by the creator.
A media item is:
- Active: plays normally.
- Coming soon: shows a teaser until its release date.
- Paused: the creator has turned streaming off.
A published experience only ever plays media that is active or coming soon.
13 MCP Tools ↑ Top
Authenticated, All Users (API key required)
| get_account | Read the signed-in account: profile, plan and usage. |
| update_account | Update the creator’s public profile. |
| refresh_experience_urls | Return an experience’s media links again and re-check premium access. Media links do not expire. |
| get_analytics | Usage figures for your API key. |
| delete_account | Permanently delete the account and everything in it. Irreversible. |
| file_counter_notification | File a DMCA counter-notification for content that was taken down. |
| manage_voice_library | Review and clean up generated voices. |
YouTube & Google Ads (API key required)
| manage_youtube | Connect your YouTube channel, pull its analytics and read them back. Stored under your account. |
| manage_google_ads | Connect your Google Ads account and read your campaign and release figures, by Short, country, age and gender. Stored under your account. Never creates a campaign or spends. |
Creator Only (API key required)
| manage_content | Create, update, list and delete media items. |
| manage_collection | Create, update, list and delete collections, and choose what goes in them. |
| manage_experience | Create, update, list and delete experiences, and choose what plays in them. |
| update_profile | Update a Host. |
Media Streaming ↑ Top
Media is served through the platform, never from storage directly.
On Harmonic Wave pages, supported audio, Shorts, and documents play through protected delivery. When playback starts, the page requests a short-lived play ticket. The platform checks access before releasing the key, and the encrypted file is decrypted in the browser. Images, and video too large for in-page decryption, are served through the access-checked routes below.
GET /media/play/:id, play a media item (access is checked on every request)GET /media/img/:entity/:id/:field, cover art and other imagesGET /media/download/:id, download, owner only
Authentication ↑ Top
Passwordless. No passwords are stored.
- Sign in to the dashboard with a code sent to your email
- Create an API key in the dashboard
- Send it as
Authorization: Bearer hw_…on every call
Rate Limits ↑ Top
Per IP
| Auth codes per email | 5 per 10 minutes |
| Auto-blacklist | 3 rate limit violations in 10 min |
Per API Key
| Authenticated tools | 30/min (Free) · 120/min (Pro) · 500/min (Enterprise) |
| Streaming (authenticated) | 500 plays/hour per user |
| Streaming (unauthenticated) | 100 plays/hour per IP |
| Uploads | 10/min |
| URL refresh | 30/min |
