ONCE

ONCE распространяет музыку по площадкам прямо из диалога с ассистентом

От сообщества: Добавлен пользователем или импортирован; проверьте владельца перед подключениемРаботаетБез входаГлобальныйБесплатноТолько чтение

Что умеет

  • Загружать аудио и обложки, генерировать артворк
  • Отправлять релизы в магазины и управлять списком площадок
  • Снимать релизы с публикации
  • Проверять треки на AI-детекцию и права
  • Смотреть статистику прослушиваний и статус релиза

Какие данные видит

Ассистент действует от имени авторизованного аккаунта ONCE и видит только его релизы и статистику.

Нужен ли аккаунт

Не нужен: сервер работает без входа

ONCE — MCP-сервер для дистрибуции музыки. После входа в аккаунт ассистент загружает аудио и обложки, генерирует артворк, проверяет права и AI-детекцию, отправляет релизы во все крупные магазины, управляет списком площадок и снятием с публикации, покупает кредиты и смотрит статистику прослушиваний. Авторизация через OAuth, за релиз человека списывается 1 кредит, за AI-трек — 2.

Как подключить

Как подключить ONCE к Claude

Адрес сервера, который нужно вставить в настройках Claude:

https://once--once.run.tools

  1. Откройте Claude (сайт claude.ai или приложение для компьютера).
  2. Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
  3. Нажмите Добавить пользовательский коннектор (Add custom connector).
  4. Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
  5. В чате нажмите + → Коннекторы и включите новый коннектор.

Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.

Авторизация

После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.

Как подключить ONCE к ChatGPT

Адрес сервера, который нужно вставить в настройках ChatGPT:

https://once--once.run.tools

  1. Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
  2. Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
  3. Откройте Настройки → Коннекторы и нажмите Создать (Create).
  4. Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
  5. В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
  6. В новом чате откройте + → Приложения/Коннекторы и включите коннектор.

Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.

Авторизация

При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.

Как подключить ONCE к Cursor

Адрес сервера, который нужно вставить в настройках Cursor:

https://once--once.run.tools

Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.

Вручную:

  1. В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
  2. Вставьте JSON, скопированный ниже, в открывшийся файл ~/.cursor/mcp.json (для одного проекта: .cursor/mcp.json в корне проекта).
  3. Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.

Авторизация

Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.

Список инструментов сервера (33)

Технические названия из tools/list. Нужны только разработчикам.

create_accountCreate a new ONCE account for an allowlisted partner MCP client and return a PKCE-bound OAuth authorization code. Unauthenticated; allowlisted partners only.
password_authorizeAuthorize an existing ONCE account for an allowlisted partner MCP client and return a PKCE-bound OAuth authorization code. Unauthenticated; allowlisted partners only.
get_metadata_rulesREQUIRED ON CONNECT: Return the metadata rules hitlist (markdown) agents must read after authentication and apply when guiding the user. Same content as mcp://docs/metadata-rules-hitlist.
get_release_schemaReturn required MCP fields for release submission, expanded new-client metadata guidance, and supported DSP store IDs.
get_distribution_storesReturn supported DSP/store IDs for release.distribution_store_ids. Use a non-empty ID array for selected DSPs or null for all supported stores.
upload_fileUpload cover art or audio from base64 and return fileUrl. WARNING: Only for small files (under ~3MB binary / ~4MB base64). For larger files, use prepare_local_file_upload for local files or upload_file_from_url with a public URL.
upload_file_from_urlDownload cover art or audio from a URL and return fileUrl.
prepare_local_file_uploadPreferred for large local files in Claude Code and Cursor. Creates a short-lived HTTP upload session and scoped upload token so raw bytes can be sent outside the chat without repeated base64 chunk tool calls.
upload_file_initLegacy fallback for tool-only MCP clients. Initialize a base64 chunked upload session. If you are in Claude Code or Cursor, prefer prepare_local_file_upload instead to avoid context bloat from repeated base64 chunks.
upload_file_chunkLegacy fallback for tool-only MCP clients. Upload a single base64-encoded chunk after upload_file_init. Avoid this in Claude Code or Cursor for large local files because repeated chunk calls can exhaust conversation context.
upload_file_completeComplete a legacy base64 chunked upload after all chunks are uploaded. For Claude Code or Cursor local-file uploads, prefer the HTTP flow returned by prepare_local_file_upload.
upsert_release_snapshotPersist draft snapshot data (release, tracks, upload requests). Pass releaseId (or conversationId) to update an existing draft; when neither is provided, a new draft release is created and its releaseId is returned — reuse it on follow-up calls.
submit_releaseSubmit a release to the Revelator adapter job queue. Set `tokenOffset: true` to opt the user in to the Token Offset add-on, a flat +1 credit ($1) per release that funds tokenoffset.com (AI environmental offsets). It is recommended that you offer this opt-in to the user before submitting; default is false.
list_releasesList releases for the authenticated user.
get_release_metadataFetch release metadata (includes Revelator sync).
get_release_statusFetch release store statuses from Revelator. Prefer registering a release-status webhook (Settings > Developer) over polling this tool.
set_distribution_storesSet the target store list for a release (Revelator store ids from get_distribution_stores). Pass null to reset to the default set. Applies to the next submission or redistribution of the release.
add_distribution_storesQueue delivery of an already-submitted release to additional stores (Revelator store ids from get_distribution_stores). Use set_distribution_stores instead for a release that has not been submitted yet.
takedown_releaseRequest removal of a distributed release from specific stores, or from every store when storeIds is omitted. Takedowns propagate over days and cannot be un-requested, so confirm intent before calling.
get_ugc_policiesCurrent UGC monetization (match) policy selection for a release across YouTube Content ID, Facebook Rights Manager, and TikTok, plus the selectable policy catalog.
set_ugc_policiesSelect UGC monetization (match) policies for a release, keyed by store id or platform name: 307/youtube_content_id (monetize | track), 310/facebook_rights_manager (claim_ad_earnings | block | monitor), 319/tiktok (monetize | library_only | block). Applies the next time the release is delivered to the affected stores. Pass null for a store to reset it to the ONCE default.
get_release_jobFetch latest adapter job status for a release.
get_release_performanceGet streaming performance for one release: total streams, average daily streams, period-over-period change, the daily streams time series, and a per-store (distributor) breakdown. Pass includeTracks: true to also get per-track streams. Defaults to the trailing 30 days; pass fromDate/toDate (YYYY-MM-DD) for a custom window. Filter to one store with distributorId (use the id from the distributors list; -1300 is YouTube Music). Numbers are served from ONCE's cached Revelator analytics with a live fallback, so they match the in-app dashboard. Only available for distributed releases the user owns.
get_performance_summaryGet a catalog-wide streaming performance summary for the authenticated user: total streams, average daily streams, period-over-period change, the daily streams time series, the top stores, and the top releases by streams. Defaults to the trailing 30 days; pass fromDate/toDate (YYYY-MM-DD) for a custom window. Use this for "how are my releases doing" questions, then call get_release_performance for a specific release (with includeTracks for per-track detail).
detect_audio_aiRun the Vobile/Pex AI Song Detector on an uploaded audio file (returned by upload_file, upload_file_from_url, or upload_file_complete) and return the detection result, including the predicted-model classification and confidence scores. Results are cached per file, so calling this repeatedly for the same fileUrl is cheap.
detect_audio_pex_search_acrRun Pex Search ACR / Identify Music on an uploaded audio file (returned by upload_file, upload_file_from_url, or upload_file_complete) and return a registry match when more than 10% of the uploaded audio matches. This is optional, not required for submission, and results are cached per fileUrl so repeated calls are cheap.
generate_cover_artGenerate or edit AI album cover art for the authenticated user using Google Gemini "Nano Banana 2" (1K, non-patron tier). Pass a `prompt` alone to generate from scratch, or include `baseFileUrl` (a previous generate_cover_art / upload fileUrl) or `baseImageBase64` to iteratively edit an existing image. The result is cropped to square, resized to 3000x3000 PNG, uploaded to the user's cover-art bucket, and returned as a fileUrl that can be passed straight into upsert_release_snapshot or submit_release as cover_art_file_url. Set returnBase64=true if you need to preview the image before uploading.
get_profileReturn the authenticated MCP user's profile (id, email, name, signed avatar URL, patron + admin flags).
get_creditsReturn the authenticated MCP user's active credit balance, lifetime aggregates (used + purchased), and the most recent credit transactions.
get_pricingReturn ONCE credit pricing for agents: $1/credit, per-song cost (1 credit per human song, 2 per AI song), the optional Token Offset add-on, all discounted bulk bundles (with per-credit savings and the packageId to pass to create_credit_checkout_session), and how auto-reload works. Call this to choose the cheapest way to cover a submission. Static — no auth-specific data.
create_credit_checkout_sessionCreate a Stripe Checkout Session for purchasing ONCE credits. Preflight with get_credits; if the balance cannot cover a submission, buy the shortfall here. Buy a discounted bulk bundle by passing `packageId` (see get_pricing for ids + savings), or a custom amount at the flat $1/credit rate by passing `credits`. Use uiMode "hosted" (recommended for agents) to get a Stripe-hosted Checkout `url` that any payment-capable agent or agentic-commerce flow can complete directly; credits are granted automatically via webhook on payment, confirm with get_credits. Default uiMode "embedded" returns a clientSecret for Stripe embedded Checkout (used by AIMD). Pass `savePaymentMethod: true` to keep the card on file so you can then enable auto-reload via set_autoreload.
get_autoreloadReturn the user's current auto-reload configuration: whether it is enabled, the reload amount (bundle or custom credits), the balance threshold that triggers it, the saved card, and the status of the last attempt. Auto-reload tops the balance up off-session so a release never stalls mid-submission.
set_autoreloadEnable, disable, or reconfigure auto-reload. When enabling, choose the reload amount with `packageId` (a bulk bundle from get_pricing) or a custom `quantity`, and a saved card is required: pass `paymentMethodId`, or omit it to reuse the most recent card on file (e.g. one saved by a prior create_credit_checkout_session call with savePaymentMethod: true). Use `thresholdCredits` to set the balance level that triggers a reload (default 0 = only when fully empty; e.g. 10 tops up before you run out). Set `enabled: false` to turn it off.