Summary

ASCII command protocol over TCP for media server control. Covers media transport, library browsing, and feedback/notification. Doc covers MCS 3.0 family; Ma6-specific firmware/commands not stated.

Transport

protocols:
  - tcp
addressing:
  port: 5004
auth:
  type: none  # inferred: no auth procedure in source

Traits

- queryable       # inferred: GetStatus, GetVersions, GetLicenseMessage, Time, Uptime, Browse*
- routable        # inferred: SetInstance, Navigate, SetMusicFilter, SetRadioFilter

Actions

- id: banner
  label: Banner
  kind: query
  command: "banner"
  params: []
- id: set_xml_mode
  label: Set XML Mode
  kind: action
  command: "setxmlmode {mode}"
  params:
    - name: mode
      type: enum
      values: [none, lists]
- id: cls
  label: Clear Screen
  kind: action
  command: "cls"
  params: []
- id: exit
  label: Exit Session
  kind: action
  command: "exit"
  params: []
- id: help
  label: Help
  kind: query
  command: "help {command}"
  params:
    - name: command
      type: string
      description: Optional command name
- id: get_versions
  label: Get Versions
  kind: query
  command: "GetVersions"
  params: []
- id: get_license_message
  label: Get License Message
  kind: query
  command: "GetLicenseMessage"
  params: []
- id: time
  label: Time
  kind: query
  command: "Time {format}"
  params:
    - name: format
      type: string
      description: Optional format code (d, D, f, F, g, G, m, r, s, U)
- id: uptime
  label: Uptime
  kind: query
  command: "Uptime"
  params: []
- id: browse_encodings
  label: Browse Encodings
  kind: query
  command: "BrowseEncodings"
  params: []
- id: set_encoding
  label: Set Encoding
  kind: action
  command: "SetEncoding {id}"
  params:
    - name: id
      type: integer
- id: browse_instances
  label: Browse Instances
  kind: query
  command: "BrowseInstances"
  params: []
- id: set_instance
  label: Set Instance
  kind: action
  command: "SetInstance \"{instance}\""
  params:
    - name: instance
      type: string
      description: Instance name, or "*" for current
- id: start_mcs
  label: Start MCS
  kind: action
  command: "StartMCS"
  params: []
- id: msg_box
  label: MsgBox (MCS Software Only)
  kind: action
  command: "MsgBox {id} \"{caption}\" \"{message}\" \"{buttons}\" \"{timeout}\""
  params:
    - name: id
      type: integer
    - name: caption
      type: string
    - name: message
      type: string
    - name: buttons
      type: string
      description: Semicolon delimited button texts
    - name: timeout
      type: integer
      description: Timeout in seconds (default 5)
- id: get_status
  label: Get Status
  kind: query
  command: "GetStatus"
  params: []
- id: subscribe_events
  label: Subscribe Events
  kind: action
  command: "SubscribeEvents {events}"
  params:
    - name: events
      type: string
      description: "True, False, or comma-delimited event list"
- id: navigate
  label: Navigate (MCS Software Only)
  kind: action
  command: "Navigate {screen}"
  params:
    - name: screen
      type: enum
      values: [FMRadio, InternetRadio, LiveTV, MorePrograms, MusicAlbums, MusicArtists, MusicSongs, MyMusic, MyPictures, MyTV, MyVideos, RecordedTV, RecorderStorageSettings, ScheduledTVRecordings, SlideShow, Start, TVGuide, Visualizations, PhotoDetails, SlideShowSettings]
- id: play
  label: Play
  kind: action
  command: "Play"
  params: []
- id: stop
  label: Stop
  kind: action
  command: "Stop"
  params: []
- id: pause
  label: Pause
  kind: action
  command: "Pause"
  params: []
- id: play_pause
  label: PlayPause
  kind: action
  command: "PlayPause"
  params: []
- id: skip_next
  label: Skip Next
  kind: action
  command: "SkipNext"
  params: []
- id: skip_previous
  label: Skip Previous
  kind: action
  command: "SkipPrevious"
  params: []
- id: shuffle
  label: Shuffle
  kind: action
  command: "Shuffle {mode}"
  params:
    - name: mode
      type: enum
      values: [true, false, toggle]
- id: repeat
  label: Repeat
  kind: action
  command: "Repeat {mode}"
  params:
    - name: mode
      type: enum
      values: [true, false, toggle]
- id: browse_albums
  label: Browse Albums
  kind: query
  command: "BrowseAlbums {start} {reqcount}"
  params:
    - name: start
      type: integer
    - name: reqcount
      type: integer
- id: browse_artists
  label: Browse Artists
  kind: query
  command: "BrowseArtists {start} {reqcount}"
  params:
    - name: start
      type: integer
    - name: reqcount
      type: integer
- id: browse_genres
  label: Browse Genres
  kind: query
  command: "BrowseGenres {start} {reqcount}"
  params:
    - name: start
      type: integer
    - name: reqcount
      type: integer
- id: browse_now_playing
  label: Browse Now Playing
  kind: query
  command: "BrowseNowPlaying {start} {reqcount}"
  params:
    - name: start
      type: integer
    - name: reqcount
      type: integer
- id: browse_playlists
  label: Browse Playlists
  kind: query
  command: "BrowsePlaylists {start} {reqcount}"
  params:
    - name: start
      type: integer
    - name: reqcount
      type: integer
- id: browse_radio_genres
  label: Browse Radio Genres
  kind: query
  command: "BrowseRadioGenres {start} {reqcount}"
  params:
    - name: start
      type: integer
    - name: reqcount
      type: integer
- id: browse_radio_stations
  label: Browse Radio Stations
  kind: query
  command: "BrowseRadioStations {start} {reqcount}"
  params:
    - name: start
      type: integer
    - name: reqcount
      type: integer
- id: browse_radio_sources
  label: Browse Radio Sources
  kind: query
  command: "BrowseRadioSources {start} {reqcount}"
  params:
    - name: start
      type: integer
    - name: reqcount
      type: integer
- id: browse_titles
  label: Browse Titles
  kind: query
  command: "BrowseTitles {start} {reqcount}"
  params:
    - name: start
      type: integer
    - name: reqcount
      type: integer
- id: browse_radio_stations_picklist
  label: Browse Radio Stations (PickList)
  kind: query
  command: "BrowseRadioStations 1 10"
  params: []
- id: set_radio_filter
  label: Set Radio Filter
  kind: action
  command: "SetRadioFilter {tag}={value}"
  params:
    - name: tag
      type: enum
      values: [Source, Genre]
    - name: value
      type: string
- id: set_radio_filter_clear
  label: Clear Radio Filter
  kind: action
  command: "SetRadioFilter Clear"
  params: []
- id: ack_pick_item
  label: Ack Pick Item
  kind: action
  command: "AckPickItem {guid}"
  params:
    - name: guid
      type: string
- id: set_pick_list_count
  label: Set PickList Count
  kind: action
  command: "SetPickListCount {count}"
  params:
    - name: count
      type: integer
- id: play_album
  label: Play Album
  kind: action
  command: "PlayAlbum \"{album}\" {enqueue}"
  params:
    - name: album
      type: string
      description: GUID or album name in quotes
    - name: enqueue
      type: enum
      values: [true, false]
- id: play_artist
  label: Play Artist
  kind: action
  command: "PlayArtist \"{artist}\" {enqueue}"
  params:
    - name: artist
      type: string
      description: GUID or artist name in quotes
    - name: enqueue
      type: enum
      values: [true, false]
- id: play_genre
  label: Play Genre
  kind: action
  command: "PlayGenre \"{genre}\" {enqueue}"
  params:
    - name: genre
      type: string
      description: GUID or genre name in quotes
    - name: enqueue
      type: enum
      values: [true, false]
- id: play_playlist
  label: Play Playlist
  kind: action
  command: "PlayPlaylist \"{playlist}\" {enqueue} {startGuid}"
  params:
    - name: playlist
      type: string
      description: GUID or playlist name in quotes
    - name: enqueue
      type: enum
      values: [true, false]
    - name: startGuid
      type: string
      description: Optional starting track GUID
- id: play_title
  label: Play Title
  kind: action
  command: "PlayTitle \"{title}\" {enqueue}"
  params:
    - name: title
      type: string
      description: GUID or song name in quotes
    - name: enqueue
      type: enum
      values: [true, false]
- id: jump_to_now_playing_item
  label: Jump To Now Playing Item
  kind: action
  command: "JumpToNowPlayingItem {target}"
  params:
    - name: target
      type: string
      description: GUID or 1-based queue index
- id: remove_now_playing_item
  label: Remove Now Playing Item
  kind: action
  command: "RemoveNowPlayingItem {target}"
  params:
    - name: target
      type: string
      description: GUID or 1-based queue index
- id: play_radio_station
  label: Play Radio Station
  kind: action
  command: "PlayRadioStation \"{station}\""
  params:
    - name: station
      type: string
      description: GUID or station name in quotes
- id: set_music_filter
  label: Set Music Filter
  kind: action
  command: "SetMusicFilter {tag}={value}"
  params:
    - name: tag
      type: enum
      values: [Artist, Album, Genre, Playlist, Title, Search]
    - name: value
      type: string
      description: GUID, string, or Search="expr" with optional * wildcards
- id: set_music_filter_clear
  label: Clear Music Filter
  kind: action
  command: "SetMusicFilter Clear"
  params: []
- id: send_keys_navigation
  label: SendKeys - Navigation (MCS Software Only)
  kind: action
  command: "SendKeys {key}"
  params:
    - name: key
      type: enum
      values: [Home, Up, Down, Left, Right, OK, Back, Details, Guide, Jump, MoreInfo]
- id: send_keys_transport
  label: SendKeys - Transport (MCS Software Only)
  kind: action
  command: "SendKeys {key}"
  params:
    - name: key
      type: enum
      values: [Play, Pause, Stop, Record, FastForward, Rewind, Skip, Replay]
- id: send_keys_av_power
  label: SendKeys - AV / Power (MCS Software Only)
  kind: action
  command: "SendKeys {key}"
  params:
    - name: key
      type: enum
      values: [Volume+, Volume-, Chan/Page+, Chan/Page-, Mute, DVDMenu, Standby]
- id: send_keys_data_entry
  label: SendKeys - Data Entry (MCS Software Only)
  kind: action
  command: "SendKeys {key}"
  params:
    - name: key
      type: enum
      values: ["0","1","2","3","4","5","6","7","8","9", Clear, Enter]

Feedbacks

- id: connection_banner
  type: string
  description: Banner sent on connect, includes version (e.g. "Welcome to the Autonomic Media Control Server version 3.0.XXXX.XXX Release.")
- id: report_state
  type: object
  description: Key=value tokens reported via ReportState (response to GetStatus) and StateChanged (events). Keys include Volume, MediaControl, MediaName, ArtistName, TrackName, TrackNumber, TotalTracks, TrackTime, TrackDuration, Shuffle, RepeatSet, Running, SessionStart, MediaType, CD, DVD, Radio, Recording, RadioFrequency, ParentalAdvisoryRating, CallingPartyName, CallingPartyNumber, PhoneCall, TitleNumber, Visualization, TransitionTime, MediaTime, Error, Ejecting, GuideLoaded, SessionEnd.
- id: media_control_state
  type: enum
  values: [Play, Stop, Pause, Rewind1, Rewind2, Rewind3, FF1, FF2, FF3, NextFrame, PrevFrame, SlowMotion1, SlowMotion2, SlowMotion3, SkipNext, SkipPrev]
- id: navigation_state
  type: enum
  values: [FS_Home, FS_DVD, FS_TV, Guide, Music, Photos, Radio, RecordedShows, Videos, Extensibility, Unknown]
- id: ui_event_navigate
  type: string
  description: StateChanged Main UI=<Navigate page="..."/> with page in [NowPlaying, RefreshList]
- id: ui_event_status_message
  type: string
  description: StateChanged Main UI=<StatusMessage message="..."/>
- id: ui_event_clear
  type: string
  description: StateChanged Main UI=<Clear guid="..."/>
- id: ui_event_message_box
  type: object
  description: StateChanged Main UI=<MessageBox caption="..." message="..." timeout="..."> with Button children
- id: ui_event_input_box
  type: object
  description: StateChanged Main UI=<InputBox caption="..." message="..." timeout="..." value="..." action="..."/>
- id: msgbox_response
  type: string
  description: Server reply format "MsgBox [id] [button]" with 1-based button index

Variables

# UNRESOLVED: source documents state parameters as ReportState/StateChanged key=value tokens rather than discrete settable variables. Treat Volume as settable via transport (UNRESOLVED for explicit Set Volume command - not documented).
- id: volume
  type: integer
  description: Master MCS volume level, reported in ReportState/StateChanged. No explicit Set command documented.

Events

- id: state_changed
  type: object
  description: StateChanged <instance> <name>=<value> emitted after SubscribeEvents True. Documented name/value pairs listed in "Valid Name / Values" table of the source.
- id: ui_event
  type: object
  description: StateChanged Main UI=... envelope for Navigate / StatusMessage / Clear / MessageBox / InputBox.

Macros

# UNRESOLVED: source describes asynchronous state changes but no formal multi-step macro sequences.

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or power-on sequencing requirements.

Notes

Protocol is case-insensitive ASCII over TCP, CRLF terminated. Default port 5004. Album art served over HTTP on port 80 (Mirage) or 5005 (MCS Software) via /albumart path with query params c/guid/fmt/h/w/rfle/rflh/rflo/rz. List responses can be Standard ASCII or XML (toggle via setxmlmode lists). PickLists respond asynchronously; use AckPickItem and SetPickListCount. Source covers MCS 3.0 family generally — Ma6-specific features not found in source.

Provenance

source_domains:
  - autonomic-controls.com
  - autonomic.atlassian.net
source_urls:
  - http://www.autonomic-controls.com/documents/MCS30/MCS_3.0_IP_Control_Protocol.pdf
  - https://autonomic.atlassian.net/wiki/spaces/ASKB/pages/1509556225/Autonomic+Media+Server+Control+Protocol
  - https://autonomic.atlassian.net/wiki/spaces/ASKB/pages/25788450/MRAD+Communications+on+MAS
  - https://autonomic.atlassian.net/wiki/spaces/ASKB/overview
retrieved_at: 2026-06-30T10:08:08.280Z
last_checked_at: 2026-07-07T11:04:04.776Z

Verification Summary

verdict: verified
checked_at: 2026-07-07T11:04:04.776Z
matched_actions: 54
action_count: 54
confidence: medium
summary: "All 54 spec actions match verbatim source commands; transport port 5004 confirmed; SendKeys consolidated into 4 parameterized spec actions covers full source key table; source command catalogue fully represented. (5 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "source is the MCS 3.0 IP/Serial spec, not a Ma6-specific manual; no Ma6 model string found in source."
- "source documents state parameters as ReportState/StateChanged key=value tokens rather than discrete settable variables. Treat Volume as settable via transport (UNRESOLVED for explicit Set Volume command - not documented)."
- "source describes asynchronous state changes but no formal multi-step macro sequences."
- "source contains no safety warnings, interlock procedures, or power-on sequencing requirements."
- "RS-232 specifics (baud rate, parity, framing) for Ma6 not stated in source; source describes \"Ethernet and RS-232 control protocol\" but only TCP port 5004 documented. Firmware version not stated. Ma6 model name not found in source — spec covers the MCS 3.0 family."

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0