{"_id":"@audiodn/mcp","_rev":"5-251c8667c33261836492f0d64faab69e","name":"@audiodn/mcp","dist-tags":{"latest":"0.3.4"},"versions":{"0.2.0":{"name":"@audiodn/mcp","version":"0.2.0","keywords":["audiodn","audio","mcp","model-context-protocol","ai","agent"],"author":{"url":"https://github.com/audiodn","name":"AudioDN"},"license":"MIT","_id":"@audiodn/mcp@0.2.0","maintainers":[{"name":"gdbate","email":"gdbate@gmail.com"}],"homepage":"https://github.com/audiodn/mcp#readme","bugs":{"url":"https://github.com/audiodn/mcp/issues"},"bin":{"audiodn-mcp":"dist/index.js"},"dist":{"shasum":"e7ebacfac53f9b1f0820d60660db1450640a2c38","tarball":"https://registry.npmjs.org/@audiodn/mcp/-/mcp-0.2.0.tgz","fileCount":54,"integrity":"sha512-PivSMjuppzVLj/20SBZ+J0HidJiP5xbzY0xr3zwSlvNZ11Ry9g/ngU8bZt5Dj8snvS2G99DYCtKton3JtvnFJQ==","signatures":[{"sig":"MEQCIBdFs9jBVwp7GNQ9aJtCD9ACcjkF3Vc1pn81g6Y2xKRbAiAn1GMUB1yRhpMt3OrZpf+VdlqfjDqWuJLc+8h9XNYqDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193382},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"848bf873fea81f173e1236cd6760976915d77c0e","scripts":{"dev":"tsc --watch","lint":"tsc --noEmit","sync":"node scripts/sync-canonical.mjs","test":"vitest run","build":"tsc","smoke":"node scripts/smoke.mjs","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run test && npm run build && node scripts/check-snapshots.mjs"},"_npmUser":{"name":"gdbate","email":"gdbate@gmail.com"},"repository":{"url":"git+https://github.com/audiodn/mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Model Context Protocol server for AudioDN. Exposes the ADN REST API as MCP tools plus offline, grounded documentation tools so AI agents (Cursor, Claude Desktop, Claude Code, etc.) can configure audio hosting on a user's behalf.","directories":{},"_nodeVersion":"26.3.1","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.8.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.0_1783981608449_0.5807326405494024","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@audiodn/mcp","version":"0.3.1","keywords":["audiodn","audio","mcp","model-context-protocol","ai","agent"],"author":{"url":"https://github.com/audiodn","name":"AudioDN"},"license":"MIT","_id":"@audiodn/mcp@0.3.1","maintainers":[{"name":"gdbate","email":"gdbate@gmail.com"}],"homepage":"https://github.com/audiodn/mcp#readme","bugs":{"url":"https://github.com/audiodn/mcp/issues"},"bin":{"audiodn-mcp":"dist/index.js"},"dist":{"shasum":"6ccf85309471b71876d8095061154b1d12d34036","tarball":"https://registry.npmjs.org/@audiodn/mcp/-/mcp-0.3.1.tgz","fileCount":62,"integrity":"sha512-+OB8a7jdIB0LFxuuEzUValaD4vDuPGHM8YLqpxUz2/9ZQ8mtHnJq19Ft6oRoZEhMyH8qW8yZurIcQVOjHjIoBA==","signatures":[{"sig":"MEUCIGVR+qVSl5JVBx22WSY/55uyMBiQomOEuef55O4LtLWlAiEA8KqmvF9kHmG7PMaEa5+FooBdlWmJKjhgzU88LuojuYA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202081},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a14f788782691a1c6eed6ad5288ee4a8dfee1701","mcpName":"net.audiodelivery/mcp","scripts":{"dev":"tsc --watch","lint":"tsc --noEmit","sync":"node scripts/sync-canonical.mjs","test":"vitest run","build":"tsc","smoke":"node scripts/smoke.mjs","start":"node dist/index.js","deploy":"wrangler deploy","cf-typegen":"wrangler types","dev:worker":"wrangler dev","test:watch":"vitest","prepublishOnly":"npm run test && npm run build && node scripts/check-snapshots.mjs"},"_npmUser":{"name":"gdbate","email":"gdbate@gmail.com"},"repository":{"url":"git+https://github.com/audiodn/mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Model Context Protocol server for AudioDN. Exposes the ADN REST API as MCP tools plus offline, grounded documentation tools so AI agents (Cursor, Claude Desktop, Claude Code, etc.) can configure audio hosting on a user's behalf.","directories":{},"_nodeVersion":"26.3.1","dependencies":{"zod":"^3.23.8","agents":"^0.17.4","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","wrangler":"^4.110.0","typescript":"^5.8.3","@types/node":"^22.0.0","@cloudflare/workers-types":"^5.20260713.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.3.1_1784012288246_0.46888579031856414","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@audiodn/mcp","version":"0.3.2","keywords":["audiodn","audio","mcp","model-context-protocol","ai","agent"],"author":{"url":"https://github.com/audiodn","name":"AudioDN"},"license":"MIT","_id":"@audiodn/mcp@0.3.2","maintainers":[{"name":"gdbate","email":"gdbate@gmail.com"}],"homepage":"https://github.com/audiodn/mcp#readme","bugs":{"url":"https://github.com/audiodn/mcp/issues"},"bin":{"audiodn-mcp":"dist/index.js"},"dist":{"shasum":"5eb7a6ddb988b7432b727a40427df0c1e7ccdd5b","tarball":"https://registry.npmjs.org/@audiodn/mcp/-/mcp-0.3.2.tgz","fileCount":62,"integrity":"sha512-BMFzK7v1Wp/ZHTuNstzvrF7n8sv37x1XFSjtdhaPxyopMRou4JTUmxNtZRuUuxA6o7JB0QzGv3bHKGm1iIBz3g==","signatures":[{"sig":"MEYCIQCs9Nt4zprawFdQEeqwcmU65xTcx7y9UE4pAHhafbUoPQIhAMsXQsRrth513F8k7HTTW6vBQ+o7hMP25K9ktw35vsDW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202081},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"67656a3ff2c01eac41b7e60bd55e3e9723ab8522","mcpName":"net.audiodelivery/mcp","scripts":{"dev":"tsc --watch","lint":"tsc --noEmit","sync":"node scripts/sync-canonical.mjs","test":"vitest run","build":"tsc","smoke":"node scripts/smoke.mjs","start":"node dist/index.js","deploy":"wrangler deploy","cf-typegen":"wrangler types","dev:worker":"wrangler dev","test:watch":"vitest","prepublishOnly":"npm run test && npm run build && node scripts/check-snapshots.mjs"},"_npmUser":{"name":"gdbate","email":"gdbate@gmail.com"},"repository":{"url":"git+https://github.com/audiodn/mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Model Context Protocol server for AudioDN. Exposes the ADN REST API as MCP tools plus offline, grounded documentation tools so AI agents (Cursor, Claude Desktop, Claude Code, etc.) can configure audio hosting on a user's behalf.","directories":{},"_nodeVersion":"26.3.1","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"agents":"^0.17.4","vitest":"^2.1.8","wrangler":"^4.110.0","typescript":"^5.8.3","@types/node":"^22.0.0","@cloudflare/workers-types":"^5.20260713.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.3.2_1784012679352_0.9614629100452146","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@audiodn/mcp","version":"0.3.3","keywords":["audiodn","audio","mcp","model-context-protocol","ai","agent"],"author":{"url":"https://github.com/audiodn","name":"AudioDN"},"license":"MIT","_id":"@audiodn/mcp@0.3.3","maintainers":[{"name":"gdbate","email":"gdbate@gmail.com"}],"homepage":"https://github.com/audiodn/mcp#readme","bugs":{"url":"https://github.com/audiodn/mcp/issues"},"bin":{"audiodn-mcp":"dist/index.js"},"dist":{"shasum":"045046173081e406247f5938f9eac98697b0f063","tarball":"https://registry.npmjs.org/@audiodn/mcp/-/mcp-0.3.3.tgz","fileCount":62,"integrity":"sha512-iMfMfgLHIxPzW89VuGYq4EhJEkErAbXspRYhrZ10lDTMof8JaY2iz/glWG+c3AVSogJZCEiAw2OJ2O/aZAI5uQ==","signatures":[{"sig":"MEUCIG2uGaxZTrQuiU01ua4Hav0rAuM0XjNGVFib7A/7dGAHAiEAvYAxwlIQA9kZCv+Pr2zwdJpkuSC6SiNReaTOcqhw2G4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":203145},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f1c3b1e84789a3b1bd5e55de722e1f0e3649cdbc","mcpName":"net.audiodelivery/mcp","scripts":{"dev":"tsc --watch","lint":"tsc --noEmit","sync":"node scripts/sync-canonical.mjs","test":"vitest run","build":"tsc","smoke":"node scripts/smoke.mjs","start":"node dist/index.js","deploy":"wrangler deploy","cf-typegen":"wrangler types","dev:worker":"wrangler dev","test:watch":"vitest","prepublishOnly":"npm run test && npm run build && node scripts/check-snapshots.mjs"},"_npmUser":{"name":"gdbate","email":"gdbate@gmail.com"},"repository":{"url":"git+https://github.com/audiodn/mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Model Context Protocol server for AudioDN. Exposes the ADN REST API as MCP tools plus offline, grounded documentation tools so AI agents (Cursor, Claude Desktop, Claude Code, etc.) can configure audio hosting on a user's behalf.","directories":{},"_nodeVersion":"26.3.1","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"agents":"^0.17.4","vitest":"^2.1.8","wrangler":"^4.110.0","typescript":"^5.8.3","@types/node":"^22.0.0","@cloudflare/workers-types":"^5.20260713.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.3.3_1784511716978_0.9098314870512461","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@audiodn/mcp","version":"0.3.4","description":"Model Context Protocol server for AudioDN. Exposes the ADN REST API as MCP tools plus offline, grounded documentation tools so AI agents (Cursor, Claude Desktop, Claude Code, etc.) can configure audio hosting on a user's behalf.","mcpName":"net.audiodelivery/mcp","type":"module","bin":{"audiodn-mcp":"dist/index.js"},"main":"./dist/index.js","scripts":{"build":"tsc","dev":"tsc --watch","start":"node dist/index.js","lint":"tsc --noEmit","test":"vitest run","test:watch":"vitest","sync":"node scripts/sync-canonical.mjs","smoke":"node scripts/smoke.mjs","dev:worker":"wrangler dev","deploy":"wrangler deploy","cf-typegen":"wrangler types","prepublishOnly":"npm run test && npm run build && node scripts/check-snapshots.mjs"},"keywords":["audiodn","audio","mcp","model-context-protocol","ai","agent"],"author":{"name":"AudioDN","url":"https://github.com/audiodn"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/audiodn/mcp.git"},"bugs":{"url":"https://github.com/audiodn/mcp/issues"},"homepage":"https://github.com/audiodn/mcp#readme","publishConfig":{"access":"public"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","zod":"^3.23.8"},"devDependencies":{"@cloudflare/workers-types":"^5.20260713.1","@types/node":"^22.0.0","agents":"^0.17.4","typescript":"^5.8.3","vitest":"^2.1.8","wrangler":"^4.110.0"},"engines":{"node":">=18.0.0"},"gitHead":"f20f46e14dd82e5ad7f382cba2cc7a6f83a87cb0","types":"./dist/index.d.ts","_id":"@audiodn/mcp@0.3.4","_nodeVersion":"26.3.1","_npmVersion":"11.16.0","dist":{"integrity":"sha512-MGgNbQMaVta4F/c9klhGQyVOIKIDqhRahWzrC/URZTN5AqdLX2FlM6rxl+83eC71EaLT62xcMRj384cAjsehhA==","shasum":"1c26babf7725ea714ee37ee6bbc256c2106bbdf2","tarball":"https://registry.npmjs.org/@audiodn/mcp/-/mcp-0.3.4.tgz","fileCount":62,"unpackedSize":204117,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCENMdIeVteMkl+TxYw4nKB/xHs1nvJ4T80HM/zH9qFMwIgZAM1yWcNxTPAUzIcRv/Cl9e7elLYyGNEHjiWy5cmchg="}]},"_npmUser":{"name":"gdbate","email":"gdbate@gmail.com"},"directories":{},"maintainers":[{"name":"gdbate","email":"gdbate@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.3.4_1784831269049_0.2718255831607128"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-13T22:26:48.189Z","modified":"2026-07-23T18:27:49.389Z","0.2.0":"2026-07-13T22:26:48.593Z","0.3.1":"2026-07-14T06:58:08.392Z","0.3.2":"2026-07-14T07:04:39.483Z","0.3.3":"2026-07-20T01:41:57.165Z","0.3.4":"2026-07-23T18:27:49.187Z"},"bugs":{"url":"https://github.com/audiodn/mcp/issues"},"author":{"name":"AudioDN","url":"https://github.com/audiodn"},"license":"MIT","homepage":"https://github.com/audiodn/mcp#readme","keywords":["audiodn","audio","mcp","model-context-protocol","ai","agent"],"repository":{"type":"git","url":"git+https://github.com/audiodn/mcp.git"},"description":"Model Context Protocol server for AudioDN. Exposes the ADN REST API as MCP tools plus offline, grounded documentation tools so AI agents (Cursor, Claude Desktop, Claude Code, etc.) can configure audio hosting on a user's behalf.","maintainers":[{"name":"gdbate","email":"gdbate@gmail.com"}],"readme":"# `@audiodn/mcp`\n\nModel Context Protocol server for AudioDN.\n\nExposes the AudioDN REST API as MCP tools so AI agents (Cursor, Claude Desktop,\nClaude Code, VS Code, Codex, etc.) can configure audio hosting on a user's\nbehalf, plus offline, read-only **knowledge tools** grounded in the canonical\nAudioDN OpenAPI spec and documentation so agents look up the correct endpoints\ninstead of guessing.\n\n## Install in Cursor\n\nOne-click install (hosted endpoint, zero setup — knowledge/doc tools work\nimmediately):\n\n[![Add AudioDN to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](cursor://anysphere.cursor-deeplink/mcp/install?name=audiodn&config=eyJ1cmwiOiJodHRwczovL21jcC5hdWRpb2RlbGl2ZXJ5Lm5ldC9tY3AiLCJoZWFkZXJzIjp7IkF1dGhvcml6YXRpb24iOiJCZWFyZXIgJHtlbnY6QUROX0FQSV9LRVl9In19)\n\nTo enable the live API tools, set `ADN_API_KEY` (an `adn_...` key from the\ndashboard) in your environment before launching Cursor; the hosted endpoint\npicks it up from the `Authorization` header. Prefer a local stdio server? Use\nthis button instead:\n\n[![Add AudioDN (npx) to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](cursor://anysphere.cursor-deeplink/mcp/install?name=audiodn&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBhdWRpb2RuL21jcCJdLCJlbnYiOnsiQUROX0FQSV9LRVkiOiJhZG5fWU9VUl9BUElfS0VZIn19)\n\nBoth correspond to the [`mcp.json`](mcp.json) shipped with this plugin. See\n[Cursor's MCP docs](https://cursor.com/docs/context/mcp) for manual setup.\n\n## Install\n\n```bash\nnpm install -g @audiodn/mcp\n# or run on demand\nnpx @audiodn/mcp\n```\n\n## Configure\n\nSet a server-side AudioDN API key (mint one in the dashboard at\n<https://account.audiodeliverynetwork.com> under Settings → API Keys).\n\n```bash\nexport ADN_API_KEY=\"adn_...\"\n# Optional overrides:\n# export ADN_API_BASE_URL=\"https://api.audiodelivery.net\"  # default\n# export ADN_MCP_ALLOW_DELETE=1     # enable destructive delete tools (off by default)\n# export ADN_MCP_LIVE_DOCS=1        # refresh bundled docs from the public site at startup\n# export ADN_MCP_TIMEOUT_MS=30000   # per-request timeout\n```\n\n### Environment variables\n\n| Variable | Required | Default | Purpose |\n| --- | --- | --- | --- |\n| `ADN_API_KEY` | Yes | – | Server-side, full-access API key used for all live-API tools. |\n| `ADN_API_BASE_URL` | No | `https://api.audiodelivery.net` | Override the API host. |\n| `ADN_MCP_ALLOW_DELETE` | No | off | Set to `1` to expose the destructive `adn_delete_*` tools. |\n| `ADN_MCP_LIVE_DOCS` | No | off | Set to `1` to refresh bundled docs from the public site (falls back to the bundle offline). |\n| `ADN_MCP_TIMEOUT_MS` | No | `30000` | Per-request timeout in milliseconds. |\n\n## Safety model\n\n- Reads and knowledge tools are annotated read-only and always available.\n- Create/update tools run with the API key but are annotated so MCP clients can\n  prompt for approval; the client is the human-in-the-loop layer.\n- The two **delete** tools (`adn_delete_creator`, `adn_delete_collection`) are\n  hidden and refuse to run unless the server is started with\n  `ADN_MCP_ALLOW_DELETE=1`. Set it once to opt in.\n\n## Hosted (remote) endpoint\n\nBesides the local `npx` stdio server above, AudioDN runs the same tool set as a\n**hosted Streamable HTTP endpoint** on Cloudflare Workers, so clients that\nsupport remote MCP servers can connect without installing anything.\n\n- **URL:** `https://mcp.audiodelivery.net/mcp` — the MCP endpoint. The root\n  `/` serves a human landing page in a browser (and JSON for tooling), and\n  `/health` returns machine-readable server info.\n- **Auth — bring your own key:** the endpoint is public and stores no secrets.\n  Knowledge/doc tools work with **no key**. To enable the live API tools, send\n  your AudioDN API key on every request as either header:\n\n```\nAuthorization: Bearer adn_...\n# or\nX-ADN-API-Key: adn_...\n```\n\n- **Deletes** are never exposed on the hosted endpoint, regardless of key.\n\nExample client configuration (clients that support a remote/HTTP MCP URL):\n\n```json\n{\n  \"mcpServers\": {\n    \"audiodn\": {\n      \"url\": \"https://mcp.audiodelivery.net/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer adn_...\" }\n    }\n  }\n}\n```\n\nThe hosted Worker lives in `worker/` and is deployed with Wrangler\n(`npm run deploy`); it is not part of the published npm package.\n\n## Use with Cursor\n\nSettings → Tools & Integrations → MCP (or edit `~/.cursor/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"audiodn\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@audiodn/mcp\"],\n      \"env\": { \"ADN_API_KEY\": \"adn_...\" }\n    }\n  }\n}\n```\n\n## Use with Claude Desktop\n\nEdit `~/Library/Application Support/Claude/claude_desktop_config.json`\n(or the equivalent on your OS), then restart the app:\n\n```json\n{\n  \"mcpServers\": {\n    \"audiodn\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@audiodn/mcp\"],\n      \"env\": { \"ADN_API_KEY\": \"adn_...\" }\n    }\n  }\n}\n```\n\n## Use with Claude Code\n\n```bash\nclaude mcp add audiodn --env ADN_API_KEY=adn_... -- npx -y @audiodn/mcp\n```\n\n## Use with VS Code (Copilot) / Codex / Windsurf\n\nAny client that speaks MCP over stdio uses the same command. For VS Code, add to\n`.vscode/mcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"audiodn\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@audiodn/mcp\"],\n      \"env\": { \"ADN_API_KEY\": \"adn_...\" }\n    }\n  }\n}\n```\n\nFor Codex CLI (`~/.codex/config.toml`):\n\n```toml\n[mcp_servers.audiodn]\ncommand = \"npx\"\nargs = [\"-y\", \"@audiodn/mcp\"]\nenv = { ADN_API_KEY = \"adn_...\" }\n```\n\n## Tools\n\n### Knowledge tools (read-only, offline, no API key needed)\n\n| Tool | Description |\n| --- | --- |\n| `adn_about` | Server version, bundled OpenAPI version, docs source, API base. |\n| `adn_search_docs` | Keyword search over bundled docs + OpenAPI summaries. |\n| `adn_list_operations` | List all REST operations (operationId, method, path). |\n| `adn_get_operation` | Full OpenAPI definition for one operationId. |\n| `adn_get_guide` | Canonical guide (authentication, upload, processing, playback, webhooks, variant-types, security, compatibility). |\n| `adn_list_variant_types` | The seven variant types and which are API-creatable. |\n\n### Live API tools\n\n| Tool | Description | Annotation |\n| --- | --- | --- |\n| `adn_list_creators` / `adn_get_creator` | Read creators | read-only |\n| `adn_create_creator` / `adn_update_creator` | Create/update creator | write |\n| `adn_delete_creator` | Delete creator | destructive (gated) |\n| `adn_list_collections` / `adn_get_collection` | Read collections | read-only |\n| `adn_create_collection` / `adn_update_collection` | Create/update collection | write |\n| `adn_delete_collection` | Delete collection + its tracks | destructive (gated) |\n| `adn_list_tracks` / `adn_get_track` | Read tracks; `adn_get_track` polls readiness | read-only |\n| `adn_create_upload_session` / `adn_get_upload_session` | Manage upload sessions | write / read-only |\n| `adn_create_track_in_upload_session` | Register a track, get `track_upload.upload_url` | write |\n| `adn_create_play_session` / `adn_get_play_session` | Mint/read play sessions (scope: collection, track) | write / read-only |\n| `adn_list_variants` | List org delivery variants | read-only |\n\n## Resources\n\nThe server also exposes canonical docs as MCP resources for clients that attach\ncontext directly: `audiodn://openapi.json`, `audiodn://llms-full.txt`, and\n`audiodn://guide/{topic}` for each guide.\n\n## Example flow\n\nAn agent helping a user host a podcast might call:\n\n1. `adn_get_guide({ topic: \"upload\" })` — learn the canonical multi-step flow.\n2. `adn_create_collection({ title: \"My Podcast\" })`\n3. `adn_create_upload_session({ collection_id })`\n4. `adn_create_track_in_upload_session({ upload_session_id, file_name: \"ep1.mp3\" })`\n5. Your code `PUT`s the audio bytes to `track_upload.upload_url`.\n6. Poll `adn_get_track({ track_id })` until `track_status_id === \"ready\"`.\n7. `adn_create_play_session({ scope: \"track\", track_id })` — returns a signed\n   playback URL that can be embedded directly.\n\n## Build from source\n\n```bash\nnpm install\nnpm run build\nnpm test           # vitest\nnpm run smoke      # build + spawn the real binary over stdio\nnode dist/index.js\n```\n\n## Deploy the hosted endpoint\n\nThe Cloudflare Worker in `worker/` serves the same tools over Streamable HTTP.\n\n```bash\nnpx wrangler login\nnpm run dev:worker        # local: http://localhost:8787/mcp and /health\nnpm run deploy            # publish -> https://mcp.audiodelivery.net (custom domain)\ncurl https://mcp.audiodelivery.net/health\n```\n\nThe custom domain `mcp.audiodelivery.net` is provisioned by Cloudflare from the\n`routes` entry in `wrangler.toml` (the `audiodelivery.net` zone must be on the\nsame Cloudflare account).\n\nTo list on the official MCP registry (registry name `net.audiodelivery/mcp`,\nwhich must match `mcpName` in `package.json`): verify the domain once with\n`mcp-publisher login dns --domain audiodelivery.net` (add the printed TXT\nrecord), confirm `remotes[0].url` in `server.json` points at the deployed URL,\nthen `mcp-publisher publish`.\n\n## Keeping docs fresh\n\nBundled snapshots live in `assets/snapshots/`. Refresh them from the public site\nwith `npm run sync`; `prepublishOnly` verifies they are consistent before a\nrelease.\n\n## Reference\n\n- API docs: <https://audiodeliverynetwork.com/docs/api>\n- OpenAPI spec: <https://audiodeliverynetwork.com/openapi.json>\n- For-AI-agents guide: <https://audiodeliverynetwork.com/for-ai-agents>\n","readmeFilename":"README.md"}