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 nametype(string, required): Content type -image,video,text, orhtmlurl(string): URL to download content fromcontent(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,htmltags(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 nametemplateId(integer, optional): Template to use (default: 1)contentItems(array, required): List of content itemsurl(string): Content URL or ID referenceduration(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 IDterminalIds(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 namedescription(string, optional): Schedule descriptiondefaultProgramId(integer, optional): Fallback playlistitems(array, required): Schedule itemsprogramId(integer, required): Playlist to playstartTime(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 resolutionrecurrenceType(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
terminalIdsparameter 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 providedNOT_FOUND- Resource doesn’t existINTERNAL_ERROR- Server-side errorFORBIDDEN- 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 |