generated: '2026-08-13' method: derived source: mcp/rockbot-mcp.yml + openapi/*.yml notes: >- Rockbot has BOTH a live remote MCP server (https://api.rockbot.com/v5/mcp, probed 401 / OAuth-gated) and an OpenAPI describing the v5 REST surface, so the crosswalk is emitted. IMPORTANT CAVEAT ON CONFIDENCE: the MCP server's tools/list is auth-gated, so Rockbot's ACTUAL tool names and inputSchemas were never observed. The tool column below is our own derived candidate list from mcp/rockbot-mcp.yml, not a published Rockbot tool manifest. Every binding is therefore recorded as confidence: low — the REST operation each row names is real and verified in the spec, but the assertion that a Rockbot MCP tool of that name exists is not. When an authenticated tools/list becomes possible, re-run this and the confidences become meaningful. surfaces: openapi: files: - openapi/rockbot-auth-api-openapi.yml - openapi/rockbot-devices-api-openapi.yml - openapi/rockbot-music-api-openapi.yml - openapi/rockbot-audio-messaging-api-openapi.yml - openapi/rockbot-signage-api-openapi.yml - openapi/rockbot-data-api-openapi.yml operations: 55 gated: false note: >- Generated by the API Evangelist pipeline from developer.rockbot.com/api.html; Rockbot publishes no machine-readable spec of its own. graphql: endpoint: null gated: null note: 'https://api.rockbot.com/graphql returns HTTP 404 — no GraphQL surface.' mcp: url: https://api.rockbot.com/v5/mcp gated: true note: >- POST tools/list returns HTTP 401 `no bearer token` with a WWW-Authenticate Bearer challenge. Live tool names and inputSchemas require an OAuth token from https://auth.rockbot.com/application/o/mcp-server/. crosswalk: - tool: get_device_status category: devices rest: [getDeviceStatus] binding: rest confidence: low note: MCP tool name is our candidate; REST operation verified in spec. - tool: get_device_screenshots category: devices rest: [getDeviceScreenshots] binding: rest confidence: low - tool: reboot_device category: devices rest: [rebootDevice] binding: rest confidence: low - tool: get_now_playing category: music rest: [getNowPlaying] binding: rest confidence: low - tool: skip_track category: music rest: [skipTrack] binding: rest confidence: low note: Rate-limited to 6 skips per hour per zone. - tool: start_music category: music rest: [startMusic] binding: rest confidence: low - tool: stop_music category: music rest: [stopMusic] binding: rest confidence: low - tool: set_volume category: music rest: [setVolume] binding: rest confidence: low - tool: list_zone_playlists category: music rest: [listZonePlaylists] binding: rest confidence: low - tool: create_playlist_override category: music rest: [createPlaylistOverride] binding: rest confidence: low - tool: delete_playlist_override category: music rest: [deletePlaylistOverride, deleteAllPlaylistOverrides] binding: rest confidence: low note: Fans out to two operations — single-override delete and delete-all. - tool: list_messaging_campaigns_by_zone category: audio-messaging rest: [listMessagingCampaignsByZone] binding: rest confidence: low - tool: create_messaging_campaign_zone category: audio-messaging rest: [createMessagingCampaignZone] binding: rest confidence: low - tool: play_messaging_campaign category: audio-messaging rest: [playMessagingCampaign] binding: rest confidence: low - tool: list_signage_campaigns_by_zone category: signage rest: [listSignageCampaignsByZone] binding: rest confidence: low - tool: create_signage_campaign_zone category: signage rest: [createSignageCampaignZone] binding: rest confidence: low - tool: get_music_history category: data rest: [getMusicHistory] binding: rest confidence: low - tool: export_music_history category: data rest: [exportMusicHistory] binding: rest confidence: low - tool: get_export_job category: data rest: [getExportJob] binding: rest confidence: low mcp_only: [] mcp_only_note: >- Cannot be determined while tools/list is gated. An empty list here means "not observable", NOT "none exist" — Rockbot's MCP server may well expose composite or dashboard-backed tools with no public REST operation. rest_only: - capability: auth operations: [createAccessToken] reason: >- REST token exchange. The MCP surface authenticates against a different authorization server (authentik) and would not expose this. - capability: group-scoped audio messaging operations: - listMessagingCampaignsByGroup - createMessagingCampaignGroup - archiveMessagingCampaignGroup - listMessagingAssetsByGroup - uploadMessagingAssetGroup - deleteMessagingAssetGroup - capability: audio messaging campaign lifecycle operations: - archiveMessagingCampaignZone - enableMessagingCampaign - disableMessagingCampaign - addMessagingCampaignAsset - removeMessagingCampaignAsset - listMessagingAssetsByZone - uploadMessagingAssetZone - deleteMessagingAssetZone - capability: group-scoped signage operations: - listSignageCampaignsByGroup - createSignageCampaignGroup - archiveSignageCampaignGroup - listSignageAssetsByGroup - uploadSignageAssetGroup - deleteSignageAssetGroup - capability: signage campaign lifecycle operations: - archiveSignageCampaignZone - enableSignageCampaign - disableSignageCampaign - playSignageCampaign - addSignageCampaignAsset - removeSignageCampaignAsset - listSignageAssetsByZone - uploadSignageAssetZone - deleteSignageAssetZone - capability: music playlist overrides (read) operations: [getPlaylistOverrides] - capability: history and exports operations: - getSignageHistory - getMessagingHistory - exportSignageHistory - exportMessagingHistory coverage: tools_named: 19 tools_named_source: derived-candidate tools_observed: 0 tools_observed_note: tools/list is OAuth-gated (HTTP 401) tools_bound: 19 mcp_only: null rest_operations_total: 55 rest_operations_with_tool: 20 rest_operations_without_tool: 35