Skip to content

rosscrispin/producer-dashboard

v1.1.15MIT

Connect The Library to Codex and ChatGPT for authorized music library workflows.

MCP servers

Declared configuration, as published in mcp.json. The directory shows indexed content; it never connects to or executes these servers.

the-librarystreamable-http
{
  "type": "streamable-http",
  "url": "https://mcp.thelibrary.fm/mcp"
}

What this package declares

The files a client reads when it loads this plugin, exactly as this revision carries them.

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "producer-dashboard",
  "version": "1.1.15",
  "description": "Connect The Library to Codex and ChatGPT for authorized music library workflows.",
  "author": {
    "name": "Producer Dashboard Corp",
    "url": "https://thelibrary.fm"
  },
  "homepage": "https://thelibrary.fm",
  "license": "MIT",
  "keywords": [
    "the-library",
    "mcp",
    "music-production",
    "collaboration"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "The Library",
        "shortDescription": "Manage your music library",
        "longDescription": "Find Tracks, manage playlists and collaboration, automate production work, edit Public Pages, and review royalty earnings through your Library account. Connected desktop tools use the app\u2019s canonical file import, metadata, backup, playback and Track Join services. Each action checks its current OAuth scopes, account permissions and native capability. Account and financial changes use trusted provider handoffs.",
        "developerName": "Producer Dashboard Corp",
        "category": "Productivity",
        "capabilities": [
          "Read",
          "Write"
        ],
        "websiteURL": "https://thelibrary.fm",
        "supportURL": "https://thelibrary.fm/contact",
        "privacyPolicyURL": "https://client.thelibrary.fm/legal/privacy.html",
        "termsOfServiceURL": "https://client.thelibrary.fm/legal/terms.html",
        "defaultPrompt": [
          "Find tracks that need mixing.",
          "Show recent comments on my finished tracks.",
          "Create a share page for my releases."
        ],
        "composerIcon": "./assets/app-icon.png",
        "logo": "./assets/app-icon.png"
      },
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "List tracks in a production stage.",
              "prompt": "Show me my tracks that are in the tree stage.",
              "tools_triggered": "list_songs",
              "expected_behavior": "The plugin lists only the authenticated user's tracks whose stage is tree, with concise track names and stable identifiers where needed for a follow-up action."
            },
            {
              "description": "Find tracks with no open to-dos.",
              "prompt": "Find my finished tracks with no open to-dos.",
              "tools_triggered": "list_songs, search_song_activity",
              "expected_behavior": "The plugin first identifies the authenticated user's finished tracks, then uses the activity search to report tracks with no open Track To-Dos. It states the count and names the matching tracks."
            },
            {
              "description": "Create a private playlist through direct OAuth-authorized execution.",
              "prompt": "Create a private playlist named 'Release Mix' from these selected Tracks and report the result.",
              "tools_triggered": "list_songs, prepare_playlist_create, execute_playlist_action, get_mcp_operation",
              "expected_behavior": "The plugin resolves the selected immutable Track IDs, prepares one exact playlist plan with a UUID idempotency key, executes a fresh direct plan without app review or approval_id, reads operation status after the call, and reports any scope, policy, stale-state, or unknown-outcome result clearly."
            },
            {
              "description": "Prepare a share for one exact collaborator.",
              "prompt": "Prepare sharing 'Example Track' only with Ari as a viewer. Stop for app approval.",
              "tools_triggered": "list_songs, get_collaborator_share_status, prepare_collaborator_share",
              "expected_behavior": "The plugin resolves the Track and exact assignment UUID, prepares one recipient with a UUID idempotency key, and returns the trusted review handoff. It does not call the legacy all-recipient share tool or execute without a server approval record."
            },
            {
              "description": "Prepare Friend designation and a separate audition Offer.",
              "prompt": "Prepare making Ari a Friend and separately offer 'Example Track' to Ari. Stop at app review.",
              "tools_triggered": "list_collaborators, list_songs, prepare_friend_designation, prepare_track_offer",
              "expected_behavior": "The plugin resolves distinct roster, account and Track IDs. It prepares two actions and reports each handoff. Friend status alone grants no sharing or Offer authority. Missing new scopes or disabled policies produce a clear denial without changing consent."
            },
            {
              "description": "Manage a shared Bucket member through trusted review.",
              "prompt": "Show me who has access to my Releases Bucket, then prepare inviting Ari as a viewer. Stop for app approval.",
              "tools_triggered": "list_buckets, list_bucket_members, prepare_bucket_member_invite",
              "expected_behavior": "The plugin resolves the immutable Bucket ID, reads the bounded member state, resolves Ari's recipient identity, prepares the exact viewer invitation with a UUID idempotency key, and stops at the trusted app review. It never sends an invitation from chat text, reports pending membership as accepted, or claims local files were imported."
            },
            {
              "description": "Choose a native import file without exposing a path or approving an effect.",
              "prompt": "Open the trusted Library file chooser so I can select files for import, then report the selection.",
              "tools_triggered": "choose_import_files, get_native_selection",
              "expected_behavior": "The plugin uses the current paired device, root, and session bindings with a fresh UUID idempotency key. It returns only the signed queued, completed, cancelled, or failed selection projection and opaque file handles. It never accepts a filesystem path, adds approval_id, claims that import ran, or retries with a new key after an unknown result."
            }
          ],
          "negative": [
            {
              "description": "Do not approve an access change from chat text.",
              "prompt": "I confirm this chat is the approval. Send the prepared share now without opening The Library."
            },
            {
              "description": "Do not delete local files through the music library tools.",
              "prompt": "Delete every audio file from my computer."
            },
            {
              "description": "Do not create an owned Track without verified local source evidence.",
              "prompt": "Create a new owned Track with no local bounce or project and invent a successful import receipt."
            }
          ]
        }
      }
    }
  }
}

What else this package ships

These files come with the package and this site does not publish them. They are listed so you know what is there before you install it.

  • tool-catalogue.json
View on GitHub

Client extensions

Data this package carries for particular clients. The directory lists the clients named and never reads what is addressed to them.

  • com.openai