preloader

Available MCP Tools

Complete reference for all 9 MCP tools in avSign.lite

Available MCP Tools

MCP Tools Reference

avSign.lite provides 9 tools for complete digital signage control via AI agents.

Content Management

content.create

Upload new content (images, videos, text, HTML) to your media library.

Parameters:

  • name (string, required): Content name
  • type (string, required): Content type - image, video, text, or html
  • url (string): URL to download content from
  • content (string): Direct content (for text/html)
  • tags (array): Tags for organization

Example Command:

"Upload the product video from https://example.com/promo.mp4"

Tool Call:

{
  "tool": "content.create",
  "parameters": {
    "name": "Product Promo Video",
    "type": "video",
    "url": "https://example.com/promo.mp4",
    "tags": ["promo", "product"]
  }
}

Response:

{
  "id": 42,
  "name": "Product Promo Video",
  "type": "video",
  "size": 15728640,
  "duration": 30,
  "message": "Content created successfully"
}

content.list

List all available content in the media library.

Parameters:

  • type (string, optional): Filter by type - image, video, text, html
  • tags (array, optional): Filter by tags

Example Command:

"Show me all videos"

Tool Call:

{
  "tool": "content.list",
  "parameters": {
    "type": "video"
  }
}

Response:

{
  "content": [
    {
      "id": 42,
      "name": "Product Promo Video",
      "type": "video",
      "size": 15728640,
      "duration": 30,
      "createdAt": "2025-12-15T10:00:00Z"
    },
    ...
  ],
  "count": 15
}

Playlist Management

playlist.create

Create a new playlist with multiple content items.

Parameters:

  • name (string, required): Playlist name
  • templateId (integer, optional): Template to use (default: 1)
  • contentItems (array, required): List of content items
    • url (string): Content URL or ID reference
    • duration (integer): Display duration in seconds

Example Command:

"Create a playlist called 'Morning Promo' with the product video and welcome image"

Tool Call:

{
  "tool": "playlist.create",
  "parameters": {
    "name": "Morning Promo",
    "contentItems": [
      {"url": "content://42", "duration": 30},
      {"url": "content://15", "duration": 10}
    ]
  }
}

Response:

{
  "id": 5,
  "name": "Morning Promo",
  "templateId": 1,
  "contentItems": 2,
  "message": "Playlist created successfully"
}

playlist.list

List all playlists.

Parameters: None

Example Command:

"What playlists are available?"

Tool Call:

{
  "tool": "playlist.list",
  "parameters": {}
}

Response:

{
  "playlists": [
    {
      "id": 5,
      "name": "Morning Promo",
      "templateId": 1,
      "itemCount": 2,
      "createdAt": "2025-12-15T09:00:00Z"
    },
    ...
  ],
  "count": 12
}

playlist.publish

Play a playlist immediately on specified displays.

Parameters:

  • id (integer, required): Playlist ID
  • terminalIds (array, optional): Terminal IDs (auto-assigns to device terminal if omitted)

Example Command:

"Play the Morning Promo playlist now"

Tool Call:

{
  "tool": "playlist.publish",
  "parameters": {
    "id": 5
  }
}

Response:

{
  "playlistId": 5,
  "publishId": 123,
  "playlistName": "Morning Promo",
  "terminals": [1],
  "message": "Playlist published and playing immediately"
}

Multi-Display Example:

"Play the promo on lobby and cafeteria displays"
{
  "tool": "playlist.publish",
  "parameters": {
    "id": 5,
    "terminalIds": [1, 2, 3]
  }
}

playlist.reset

Stop current playback and return to home screen.

Parameters:

  • clearScheduled (boolean, optional): Also clear scheduled playlists

Example Command:

"Stop playback and return to home screen"

Tool Call:

{
  "tool": "playlist.reset",
  "parameters": {}
}

Response:

{
  "message": "Playlist reset successfully - returning to home screen",
  "action": "reset"
}

Scheduling

schedule.create

Create time-based schedules with automatic content switching.

Parameters:

  • name (string, required): Schedule name
  • description (string, optional): Schedule description
  • defaultProgramId (integer, optional): Fallback playlist
  • items (array, required): Schedule items
    • programId (integer, required): Playlist to play
    • startTime (string): Start time (HH:MM format)
    • endTime (string): End time (HH:MM format)
    • startDate (string, optional): Start date (YYYY-MM-DD)
    • endDate (string, optional): End date (YYYY-MM-DD)
    • dayOfWeek (array, optional): Days [1=Mon, 7=Sun]
    • priority (integer, optional): Priority for conflict resolution
    • recurrenceType (string, optional): none, daily, weekly, monthly
  • terminalIds (array, optional): Terminals to assign (auto-assigns if omitted)
  • isActive (boolean, optional): Active status (default: true)

Example Command:

"Schedule breakfast menu 6am-11am, lunch menu 11am-5pm, and dinner menu 5pm-10pm daily"

Tool Call:

{
  "tool": "schedule.create",
  "parameters": {
    "name": "Daily Menu Schedule",
    "description": "Automatic menu rotation by time of day",
    "items": [
      {
        "programId": 101,
        "startTime": "06:00",
        "endTime": "11:00",
        "dayOfWeek": [1,2,3,4,5,6,7],
        "priority": 1
      },
      {
        "programId": 102,
        "startTime": "11:00",
        "endTime": "17:00",
        "dayOfWeek": [1,2,3,4,5,6,7],
        "priority": 1
      },
      {
        "programId": 103,
        "startTime": "17:00",
        "endTime": "22:00",
        "dayOfWeek": [1,2,3,4,5,6,7],
        "priority": 1
      }
    ]
  }
}

Response:

{
  "scheduleId": 42,
  "name": "Daily Menu Schedule",
  "items": [
    {"id": 301, "programId": 101, "startTime": "06:00", "endTime": "11:00"},
    {"id": 302, "programId": 102, "startTime": "11:00", "endTime": "17:00"},
    {"id": 303, "programId": 103, "startTime": "17:00", "endTime": "22:00"}
  ],
  "assignedTerminals": [1],
  "message": "Schedule created successfully"
}

Weekday-Only Example:

"Schedule promotional video on weekdays 9am-5pm"
{
  "tool": "schedule.create",
  "parameters": {
    "name": "Weekday Promotions",
    "items": [
      {
        "programId": 5,
        "startTime": "09:00",
        "endTime": "17:00",
        "dayOfWeek": [1,2,3,4,5],
        "priority": 1
      }
    ]
  }
}

schedule.list

List all schedules.

Parameters: None

Example Command:

"Show me all active schedules"

Tool Call:

{
  "tool": "schedule.list",
  "parameters": {}
}

Response:

{
  "schedules": [
    {
      "id": 42,
      "name": "Daily Menu Schedule",
      "defaultProgramId": null,
      "isActive": true,
      "itemCount": 3,
      "terminalCount": 1,
      "createdAt": "2025-12-15T08:00:00Z"
    },
    ...
  ],
  "count": 5
}

Device Monitoring

device.status

Get device status, health information, and current playback.

Parameters:

  • includeSystemInfo (boolean, optional): Include detailed system info

Example Command:

"What's playing right now?"

Tool Call:

{
  "tool": "device.status",
  "parameters": {}
}

Response:

{
  "timestamp": "2025-12-15T12:34:56Z",
  "application": {
    "name": "avSign.lite",
    "version": "1.0.5",
    "buildNumber": "8"
  },
  "device": {
    "platform": "windows",
    "version": "Windows 11",
    "hostname": "LOBBY-DISPLAY-01"
  },
  "playback": {
    "status": "playing",
    "program": {
      "id": 5,
      "name": "Morning Promo",
      "templateId": 3,
      "templateResolution": "1920x1080"
    },
    "schedule": {
      "playMode": "loop",
      "publisher": "mcp_api"
    },
    "message": "Currently playing: Morning Promo"
  },
  "content": {
    "totalContent": 45,
    "totalPlaylists": 12,
    "totalTemplates": 8
  },
  "health": {
    "status": "healthy",
    "uptime": "3 days, 4 hours",
    "memoryUsage": {
      "used": "245 MB",
      "total": "8 GB",
      "percentage": "3%"
    }
  }
}

Best Practices

Default Terminal Assignment

Both playlist.publish and schedule.create support automatic terminal assignment:

  • If terminalIds parameter is omitted, the system automatically assigns to the device’s own terminal
  • Perfect for on-device CMS deployments (single-device setups)
  • For multi-display setups, explicitly specify terminalIds

Example:

// Single device (auto-assigns to device terminal)
{"tool": "playlist.publish", "parameters": {"id": 5}}

// Multi-display (explicit terminals)
{"tool": "playlist.publish", "parameters": {"id": 5, "terminalIds": [1,2,3]}}

Time Formats

  • Time: Use 24-hour format HH:MM (e.g., "14:30" for 2:30 PM)
  • Date: Use ISO format YYYY-MM-DD (e.g., "2025-12-25")
  • Day of Week: 1 = Monday, 7 = Sunday

Priority System

Higher priority numbers win conflicts:

  • Regular content: priority 1
  • Promotions: priority 5
  • Emergency alerts: priority 10

Error Handling

All tools return standardized error responses:

{
  "error": {
    "code": "NOT_FOUND",
    "message": "Playlist not found with ID: 999"
  }
}

Common error codes:

  • MISSING_PARAMETER - Required parameter not provided
  • NOT_FOUND - Resource doesn’t exist
  • INTERNAL_ERROR - Server-side error
  • FORBIDDEN - Authentication/permission issue

Tool Categories Summary

Category Tools Common Use
Content content.create, content.list Upload and browse media
Playlists playlist.create, playlist.list, playlist.publish, playlist.reset Organize and play content
Scheduling schedule.create, schedule.list Time-based automation
Monitoring device.status Health checks and playback info

Next: View real-world use cases →

Subscribe
to our newsletter