{
  "name": "aden-mcp",
  "version": "0.0.1",
  "description": "Aden MCP server: music production and artist management tools for AI agents.",
  "mcpEndpoint": "https://mcp.aden.space/mcp",
  "auth": {
    "type": "oauth2",
    "discovery": "https://mcp.aden.space/.well-known/oauth-protected-resource",
    "note": "Tool calls require a Bearer token. This listing is public."
  },
  "toolMode": {
    "default": "compact",
    "full": "Connect to /mcp?tools=full to list every catalog schema eagerly"
  },
  "tools": [
    {
      "name": "aden_find_tools",
      "description": "Search the Aden action catalog by natural-language task description",
      "source": "discovery",
      "authRequired": true
    },
    {
      "name": "aden_describe_tool",
      "description": "Return the exact schema for one catalog tool/action",
      "source": "discovery",
      "authRequired": true
    },
    {
      "name": "aden_call_tool",
      "description": "Execute one catalog tool/action with typed params",
      "source": "discovery",
      "authRequired": true
    },
    {
      "name": "list_aden_feature_docs",
      "description": "List published Aden feature documentation pages",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "get_aden_feature_doc",
      "description": "Fetch one Aden feature doc by slug",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "search_aden_docs",
      "description": "Search public Aden docs (docs.aden.space)",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "list_aden_docs",
      "description": "List public Aden site/docs pages",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "get_aden_doc",
      "description": "Fetch one public Aden doc by slug",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "get_my_tracks",
      "description": "List tracks for the authenticated user",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "get_my_albums",
      "description": "List albums for the authenticated user",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "list_guides",
      "description": "List guides visible to the authenticated user",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "create_guide",
      "description": "Create a guide (organisation members)",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "get_my_profile",
      "description": "Get the authenticated user profile",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "list_diary_entries",
      "description": "List personal diary entries",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "upsert_diary_entry",
      "description": "Create or update a personal diary entry",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "get_my_teams",
      "description": "List teams for the authenticated user",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "search_tracks",
      "description": "Search tracks across the user teams",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "get_my_demos",
      "description": "List demos for the authenticated user",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "submit_feedback",
      "description": "Submit product feedback",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "list_my_organisations",
      "description": "List organisations the user belongs to",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "invite_org_manager",
      "description": "Invite an organisation manager",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "invite_team_member",
      "description": "Invite a team member",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "revoke_org_invite",
      "description": "Revoke an organisation invite",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "skills_bundle",
      "description": "Bundle team skills/playbooks for a task",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "skills_list",
      "description": "List team skills",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "skills_get",
      "description": "Get one team skill",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "skills_search",
      "description": "Search team skills",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "skills_create",
      "description": "Create a team skill",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "skills_archive",
      "description": "Archive a team skill",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "skills_org_bundle",
      "description": "Bundle organisation skills for a task",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "skills_org_list",
      "description": "List organisation skills",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "skills_org_search",
      "description": "Search organisation skills",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "skills_org_create",
      "description": "Create an organisation skill",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "skills_org_archive",
      "description": "Archive an organisation skill",
      "source": "aden-native",
      "authRequired": true
    },
    {
      "name": "track",
      "description": "Read and modify tracks for the active team (CRUD, search, status, tags, visibility, bulk ops)",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "album",
      "description": "Read and modify albums for the active team (CRUD, search, status, release dates)",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "demo",
      "description": "Manage incoming demos for the active team (list, triage, rate, review, delete)",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "todo",
      "description": "Manage todos for the active team (CRUD, assign, deadlines, completion). Todos can attach to a track / album / milestone.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "playlist",
      "description": "Read and modify playlists for the active team (CRUD, visibility)",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "contact",
      "description": "Read and modify contacts (CRM) for the active team. Collaborators, fans, vendors, press, etc.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "contact_group",
      "description": "Read and modify contact groups (segments) for the active team. Groups are referenced from contacts.contact_group_id (int array).",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "campaign",
      "description": "Prepare and draft (personalized) email campaigns to the team's contacts. E.g. a yearly update to all bookers with the artist's releases, shows, and achievements. prepare resolves the audience + artist context, create_draft saves a reviewable draft (with optional per-recipient personalized versions). Sending always happens in the web app after user review; this tool cannot send.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "contest",
      "description": "Manage contests for the active team: drafts, schedules, entries.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "interview",
      "description": "Manage interviews (press/podcast/written) for the active team: draft, approval workflow, scheduling, link to albums/tracks/tours/events/contacts/publications.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "invoice",
      "description": "Manage invoices for the active team: draft, send, mark paid, cancel.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "financials",
      "description": "Read and record the active team’s finances: income/expense overview, run-rate forecast, entry list, categories, and recording new entries. Pairs with the invoice tool.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "goal",
      "description": "Track the team's goals. Posting cadence, release targets, show counts, revenue milestones. Create and edit goals, read current-period progress and history, apply ready-made templates, and record manual check-ins for goals the platform can't observe on its own.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "job_opening",
      "description": "Job openings posted by teams, organisations and Aden. Browse the public board, read a role in full, or list what the active team is hiring for. Read-only; post and edit roles in the web app.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "content_idea",
      "description": "The shared content-idea library. Prompts for posts, reels and stories, tagged by genre and calendar day. Browse it when planning content, and contribute ideas back.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "announcement",
      "description": "Announcements currently active for this user. Platform status notices, org-wide messages and team-targeted updates. Read-only.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "release_plan",
      "description": "Manage per-track release plans (questionnaire answers + AI-suggested post timeline).",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "track_comment",
      "description": "Read and write comments on tracks. Supports time-anchored ranges (from/till seconds) and threaded replies via parent_comment_id.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "milestone",
      "description": "Read and modify milestones (project goals, deadlines) for tracks, albums, or release plans",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "milestone_comment",
      "description": "Threaded comments + reactions on milestones and todos. Supports @mentions in body text and lists mentionable team members.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "time_entry",
      "description": "Log and manage time spent on tracks, versions, milestones, or todos. Supports attributing entries to other team members or off-platform contributors.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "session",
      "description": "Read and modify studio sessions (writing, recording, mixing, mastering) for the active team",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "studio",
      "description": "Manage studios (rooms) for the active team: create/update/delete, change location, move into a building, and manage gear/equipment & amenities. Team-scoped; organisation-owned studios are not managed here.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "building",
      "description": "Manage studio buildings (physical locations that group studios/rooms) for the active team. Team-scoped; organisation-owned buildings are not managed here.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "mix",
      "description": "Read and modify DJ mixes / live recordings for the active team",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "post",
      "description": "Read and modify team posts. Announcements, news, sponsored content",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "tour",
      "description": "Read and modify tours (multi-event runs) for the active team",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "event",
      "description": "Read and modify events (concerts, gigs, festival shows) for the active team",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "inspiration",
      "description": "Manage inspiration / reference items (moodboard) on a track or album. Add reference links (Spotify / YouTube / SoundCloud / any URL), list them, or remove them. Uploads happen in the web app.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "share",
      "description": "List, inspect, and revoke shares (public links to tracks, albums, playlists, mixes, release plans)",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "version",
      "description": "Read and modify track versions (mixes, masters, alt cuts) for the active team",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "collaborator",
      "description": "Manage individual collaborators on a track (writers, producers, performers, etc.). Use `list_for_team` to see every unique person you have collaborated with across all team tracks (one call). Use `list` for a single track. Use `update` to change royalty/publishing/master/composition/mechanical/sync splits and roles. To invite a whole team, use the `track_team` tool instead.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "track_team",
      "description": "Manage which teams are linked to a track as collaborator teams. Invites send a notification; the invited team accepts via the Aden UI. Auto-confirms when the inviter is an admin of the invited team.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "document",
      "description": "Read and modify documents (contracts, splits, lyrics PDFs, etc.) attached to tracks, versions, or albums",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "team",
      "description": "Read and modify active team profile images such as avatar, logos, and banner",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "organisation",
      "description": "Look up organisations (distributors, labels, agencies). Read-only.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "transfer",
      "description": "List, inspect, and revoke file transfers (WeTransfer-style large file deliveries) for the active team",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "testimonial",
      "description": "Read and modify testimonials (press quotes, reviews, fan blurbs) for the active team",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "notification_preferences",
      "description": "Read and modify the current user’s notification preferences (channels and event types)",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "stats",
      "description": "Aggregated activity stats for the active team: track plays, top tracks, and team-wide counts",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "import",
      "description": "Bulk-import analyzed external data (email archives, spreadsheets, contracts, exports from other tools). `bulk_create` fills the active team; `org_catalog_plan` / `org_catalog_apply` build a whole label roster. A team per artist plus their tracks, albums and playlists.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "getTrackShares",
      "description": "Find share links for a track and render them as a card in chat. Use when the user asks about shares, share links, or who a track was shared with.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "getTrackPlayer",
      "description": "Render a playable track card in the chat. Use when the user asks to listen to / play / preview a track, or when the conversation references a specific track id and an audio preview would be helpful. Pass the trackId if known; otherwise trackName is searched against title and artist.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "proposeShowPlan",
      "description": "Propose a complete show plan (date, venue, setlist, day sheet, crew) as an editable card in the chat. Use when the user wants to plan a single gig/show/event. The user then confirms the card to commit it as a real event with its setlist, day sheet, and crew assignments.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "proposeTourPlan",
      "description": "Propose a multi-date tour plan (tour header + ordered shows, each with its own setlist/day sheet/crew) as an editable card in the chat. The user then confirms to create one tour plus all events atomically.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "proposeCreateTodos",
      "description": "Draft a batch of todos for the user to review and confirm before they are created. Use this whenever the user asks you to \"add tasks\", \"set up a todo list\", \"create a checklist\", or similar. NEVER write to the DB yourself. The user confirms the card, which triggers the commit. Keep each todo to one short actionable line.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "proposeAccessChange",
      "description": "Draft a change to a team member's access for the user to review and confirm, role (what they can do), feature scopes (what they can see, e.g. only media assets + event dates for a designer), and an optional expiry. Use when the user asks to give someone specific access, restrict what a member sees, set someone up as a designer/content planner, or time-box access. NEVER write permissions yourself, the user confirms the card, which applies the change under THEIR identity. Only team admins can confirm.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "proposeStudioSession",
      "description": "Propose a studio session (title, time, goal, location, invitees) as an editable card in the chat. Use whenever the user wants to book / plan / schedule a studio, writing, mixing, or production session. The user confirms the card to actually create the session and send invites.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "proposeOutreach",
      "description": "Draft an outreach email to a set of contacts and show it as an editable card in the chat. Use when the user wants to reach out to promoters, bookers, vendors, press, or any contacts. Nothing is sent until the user clicks Send on the card. Always resolve real contacts (contact.list / contact.search) before calling this so each recipient has a valid contactId.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "commitShowPlan",
      "description": "Commit a proposed show plan to the database. Creates a real event plus its setlist, day sheet, and crew rows atomically. Use ONLY after the user has confirmed the proposal.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "commitTourPlan",
      "description": "Commit a proposed tour plan to the database. Creates one tour plus all its events (with setlist, day sheet, crew) in one operation. Use ONLY after the user has confirmed the proposal.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "updateShowSetlist",
      "description": "Replace the setlist for an existing event/show. Setlists live in `playlists` (kind='setlist') + `playlist_tracks`. This deletes any existing setlist playlist bound to the event and inserts a new one.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "updateShowDaySheet",
      "description": "Replace the day sheet (run-of-show timeline) for an existing event. Deletes existing rows and inserts the provided items.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "updateShowCrew",
      "description": "Replace crew assignments for a committed event or tour. Crew rows live in `event_crew_assignments` (event-scoped). For scope='tour', existing crew on every event of the tour is cleared and the new roster is written once per event.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "recordUserAvailability",
      "description": "Record a busy or travel window on the user's own profile so their teams, publishers, and organisations can plan sessions and shows around it. Use whenever the user mentions being unavailable, on holiday, or travelling somewhere for a period (e.g. \"I'll be in Amsterdam from April 2 to May 5\"). If the dates are ambiguous or incomplete, ask the user to confirm them before calling.",
      "authRequired": true,
      "source": "catalog"
    },
    {
      "name": "queryPeopleAvailability",
      "description": "Check which team members are free or busy in a date range. Use for questions like \"who is free on Wednesday?\", \"is anyone away next week?\", or before proposing a session date. Returns, per member, the days they are free plus their busy/travel windows (travel includes the city). Members who do not share availability with this team are listed as not shared, never assumed free. Day-granular: it knows about full days, not hours.",
      "authRequired": true,
      "source": "catalog"
    }
  ],
  "toolCount": 90
}