InfoSlides — put content on a TV or screen
MCPB · INFOSLIDES-MCP-V1.9.0.MCPB
Put a PowerPoint, PDF, photo, or live data on any smart TV, menu board, or lobby screen.
Available components
Last scanned (19 hours ago)
Scores higher than 93% of MCPB servers
Category Design and Media
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to arnibj/InfoSlides.MCP). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 1 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability71
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 16943 tokens (~141/item across 120 items; 120 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management67
- Stability observed for 20 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (97% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 14 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 121 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Nov 26 +11
- Provenance: fail → pass ▲ security
- The attested source repository moved: arnibj/InfoSlides.MCP security
- Schema quality: 10543 → 16943 ▼ functional
- First check of Tool coverage: 97 functional
- Package version: 1.7.3 → 1.9.0 functional
- 2 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.
- 26 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
- 24 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.
- 22 Oct 26 +4
- Stability: unverified → 0.23 ▲ functional
- 15 Oct 26 +30
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: excellent functional
- First check of Schema quality: fail functional
- First check of Destructive annotations: 100 functional
- First check of Tool coverage: 100 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Analysed mcpb/https://github.com/arnibj/InfoSlides.MCP/releases/download/v1.9.0/infoslides-mcp-v1.9.0.mcpb@1.9.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | mcpb |
| Reason | Verified |
| Discovered via | GitHub artifact attestations |
| Source repo | arnibj/InfoSlides.MCP |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/arnibj/InfoSlides.MCP/.github/workflows/release.yml@refs/tags/v1.9.0 |
| Rekor log index | 3649901072 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha256:f36a3060d3f9591c0facb0dfaa86d9f20dcb4e734858124596b94f683dcc1d8c |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_designed_slide Add text slide ~629
Add a slide made of words: an announcement, a notice, a welcome, "lunch moved to 1pm". This is the quickest way to put words on a screen. Give a heading, optionally some text and a call to action, and a background, either a colour, a picture already in the media library or a picture URL. A separate picture can sit beside the text, and the workspace's logo and accent colour can be added. The slide is drawn at the screen's size from fixed layouts, so the words appear exactly as written; they are not checked for accuracy. Text that is too long for the layout is refused with the field named and the number of characters that fit, rather than cut off. The layouts are fixed: for a table, columns or a look they do not have, make the slide as an image and use add_media_slide. The slide is added at once; undo_change takes it out.
| Name | Type | Req | Description |
|---|---|---|---|
| backgroundColor | string|null | – | Background colour as hex, e.g. #0F172A. The workspace accent colour (a dark blue when it has none) is used when no background is given. |
| branding | boolean|null | – | true adds the workspace logo and accent colour; a workspace without a logo gets nothing added. |
| cta | string|null | – | A short call to action such as "Book now". Up to 55 characters fit (30 to 50 beside a picture, depending on the screen). |
| durationSeconds | number|null | – | How long the slide stays on screen, in seconds, from 1 to 99; sized to the text when omitted. |
| heading | string | yes | The headline. About 60 characters fit (50 to 80 beside a picture, depending on the screen); longer text is refused with the number that fits. |
| imageMediaAssetId | string|null | – | Id of an image in the media library to show beside the text; omit when using imageUrl. |
| imageUrl | string|null | – | Publicly reachable URL of an image to show beside the text; omit when using imageMediaAssetId. |
| layout | string|null | – | heading, heading-text, heading-text-cta, heading-image-right or heading-image-left. Chosen from the fields given when omitted. |
| mediaAssetId | string|null | – | Id of an image already in the media library to use as the background. |
| mediaUrl | string|null | – | Publicly reachable URL of an image to use as the background. |
| position | integer|null | – | Zero-based position in the loop; appended when omitted. |
| slideshowId | string | yes | Id of the slideshow to add the slide to. |
| stockPhoto | object|null | – | A stock photo background: one search_stock_images result as given (photoId, downloadLocation, fullUrl and the photographer credit fields). |
| text | string|null | – | Supporting text under the headline. About 160 to 200 characters fit (175 to 275 beside a picture, depending on the screen); capitals take about 30% more room. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object|null | yes | – |
| undo | object | – | – |
| warnings | array|null | – | – |
No examples provided.
add_dynamic_slide Add live data slide ~289
Add a slide that keeps itself up to date instead of showing a fixed picture — today's soup, the current queue number, live sales figures, tomorrow's weather. Needs a template first (see create_template or list_templates). With a push template the result includes sourceId, the push source to send data to with push_data, and with createPushKey=true a pushKey for the user's system (shown once); the slide stays hidden until the first data arrives. Otherwise push values with update_source. For a fetched source such as weather or an RSS feed, create the source first (create_source) and pass its id as sourceId with a template of the same type: the slide is bound to it in this one call.
| Name | Type | Req | Description |
|---|---|---|---|
| createPushKey | boolean | – | For a push template: also create a push-only key for the new push source. |
| durationSeconds | number|null | – | How long the slide stays on screen, in seconds. |
| position | integer|null | – | Zero-based position in the loop; appended when omitted. |
| slideshowId | string | yes | Id of the slideshow to add the slide to. |
| sourceId | string|null | – | A fetched source (weather, RSS feed) to bind to the slide; its type must match the template's. Omit for a push template. |
| templateId | string | yes | Id of a template (from create_template/list_templates). |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object|null | yes | – |
| undo | object | – | – |
| warnings | array|null | – | – |
No examples provided.
add_media_slide Add photo or video slide ~265
Put a picture or a video on the screen — a photo of the specials board, a poster, a promo clip, a logo. Takes either a publicly reachable URL (downloaded server-side) or the id of a file already in the media library (see upload_media); provide exactly one. The picture is shown exactly as it is and nothing checks what it says. It is also the way to add a slide the fixed layouts of add_designed_slide cannot make: design the slide as an image and add it here. If the picture's shape does not match the screen's, the call still succeeds but returns an AspectMismatch warning — fix it rather than letting content be stretched or cropped on a display the public can see.
| Name | Type | Req | Description |
|---|---|---|---|
| durationSeconds | number|null | – | How long the slide stays on screen, in seconds. |
| mediaAssetId | string|null | – | Id of a file already in the media library (e.g. from upload_media); omit when using mediaUrl. |
| mediaUrl | string|null | – | Publicly reachable URL of the image/video; omit when using mediaAssetId. |
| position | integer|null | – | Zero-based position in the loop; appended when omitted. |
| slideshowId | string | yes | Id of the slideshow to add the slide to. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object|null | yes | – |
| undo | object | – | – |
| warnings | array|null | – | – |
No examples provided.
add_schedule_entry Add schedule entry ~200
Play a slideshow on a screen during a time window every day, e.g. the breakfast menu from 06:00 to 11:00, on top of the screen's default content. Times are HH:mm in the workspace time zone: name it when you confirm. For a one-off stretch ("for two hours", "until 17:00") use create_takeover instead. Higher priority wins where windows overlap. Warnings (aspect mismatch, HTML unsupported on this screen) come back with the result: pass them on.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | Id of the screen. |
| endTime | string | yes | End time, HH:mm, e.g. '11:00'. |
| priority | integer | – | Priority where windows overlap (default 0). |
| slideshowId | string | yes | The slideshow to play in the window. |
| startTime | string | yes | Start time, HH:mm, e.g. '06:00'. |
Structured output declared, but exposes no named fields.
No examples provided.
add_weather_alert_timeline Add weather alert timeline ~197
Add a weather alert timeline to a slideshow: 8 live data slides, one per 6 hours over the next 48 hours, each showing the weather alerts for its step and hiding itself when there are none. Needs a Weather alert source (list_sources, adapter WeatherAlert) and a plan with live data slides. Returns the 8 slides and an undo token that removes them all.
| Name | Type | Req | Description |
|---|---|---|---|
| durationSeconds | integer|null | – | Seconds per slide (default 10). |
| hideWhenEmpty | boolean|null | – | Whether the first slide hides itself when it has no alerts (the later ones always do). |
| position | integer|null | – | Zero-based position of the first slide; appended when omitted. |
| slideshowId | string | yes | Id of the slideshow. |
| sourceId | string | yes | Id of a WeatherAlert source. |
| templateId | string|null | – | A weather alert timeline template; found for you when omitted. |
Structured output declared, but exposes no named fields.
No examples provided.
assign_schedule Set screen schedule ~126
Tell a screen what to play. Connects slideshows to a registered display, in the order given, as a continuous loop. The call succeeds even when the content's shape does not match the screen's, but returns an AspectMismatch warning — act on it, because it means the content will be stretched or cropped on a display people can see. Follow with get_stream_link to get the URL to open on the TV.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | Id of the device. |
| slideshowIds | array | yes | Ids of the slideshows to play, in order. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object|null | yes | – |
| undo | object | – | – |
| warnings | array|null | – | – |
No examples provided.
check_brand Check slideshow against brand guide ~94
Check whether a slideshow follows the confirmed brand guide: colours outside the palette, text that is hard to read, a missing logo, banned phrases and fonts that are not the guide's, slide by slide. Advisory only, nothing is blocked. Covers designed and dynamic slides, not slides inside an uploaded presentation. If hasConfirmedGuide is false there is nothing to check against.
| Name | Type | Req | Description |
|---|---|---|---|
| slideshowId | string | yes | Id of the slideshow. |
Structured output declared, but exposes no named fields.
No examples provided.
check_slideshow Check a slideshow before it goes on a screen ~109
Check what will go wrong before a slideshow goes on a screen: no slides to show, a failed render, a live data slide with no source or a source that is off or failing, and a media file that failed to prepare. ready is false when any finding is an error; each finding has a message to read out and a fix. Advisory only. It does not look at text size, expired content or the screen's shape.
| Name | Type | Req | Description |
|---|---|---|---|
| slideshowId | string | yes | Id of the slideshow. |
Structured output declared, but exposes no named fields.
No examples provided.
clone_slideshow Clone slideshow ~114
Copy an existing deck so it can be customised without touching the original — or, with fromGallery=true, start from a ready-made professional design instead of a blank screen. Cloning from the gallery is the fastest way to get something presentable on a TV; call list_gallery first to see what is available.
| Name | Type | Req | Description |
|---|---|---|---|
| fromGallery | boolean | – | Clone a ready-made gallery design instead of the workspace's own slideshow. |
| sourceId | string | yes | Id of the source slideshow, or gallery item id when fromGallery=true. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object|null | yes | – |
| undo | object | – | – |
| warnings | array|null | – | – |
No examples provided.
clone_template Copy slide template ~70
Copy a layout, usually a built-in one from list_templates, into the workspace as '<title> (Copy)', so it can be changed with update_template. Needs a plan with live data slides; the error carries an upgrade link otherwise.
| Name | Type | Req | Description |
|---|---|---|---|
| templateId | string | yes | Id of the template to copy. |
Structured output declared, but exposes no named fields.
No examples provided.
create_api_key Create API key ~194
Issue a credential so another system or person can work with this workspace. Type 'admin' grants full access — use it sparingly. Type 'dataProvider' creates a locked-down push-only key tied to named slides that can do nothing except feed those slides new values via update_source: the right choice when a till system, CRM, or script needs to keep one number on the screen current, because a leaked key cannot read or change anything else. The full key is shown once and never again — tell the user to store it somewhere safe.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | What this key is for, e.g. 'till-system-lunch-price'. |
| slideIds | array|null | – | Ids of the slides a push-only key may feed. Required for dataProvider keys. |
| type | string | yes | Key type: 'admin' for full access, or 'dataProvider' for a push-only key. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object|null | yes | – |
| undo | object | – | – |
| warnings | array|null | – | – |
No examples provided.
create_broadcast_device Create broadcast channel ~115
Create a broadcast channel: one stream that plays a slideshow on any number of screens or in a browser, with no pairing. Optionally give the slideshow it plays. Its watch link comes from get_stream_link. Needs a plan with broadcast channels and counts against the screen limit; the error carries an upgrade link otherwise.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Name of the channel, e.g. 'Lobby channel'. |
| slideshowId | string|null | – | The slideshow it plays; set later with play_slideshow_find_device when omitted. |
Structured output declared, but exposes no named fields.
No examples provided.
create_device Register screen ~194
Register the physical screen the content will play on — the TV in reception, the menu board above the counter, the noticeboard in the corridor, the display in the waiting room, the monitor in the shop window (Icelandic: upplýsingaskjár, skjár). Do this once per screen. Free accounts allow exactly 1 active screen; a DeviceLimitReached error comes with an upgrade link. Resolution defaults to 1920x1080 for a normal wall-mounted TV — use 1080x1920 for a screen turned on its end, which is common for menu boards and window displays.
| Name | Type | Req | Description |
|---|---|---|---|
| height | integer | – | Screen height in pixels (default 1080 — landscape). |
| name | string | yes | What this screen is and where it is, e.g. 'Lobby screen' or 'Menu board — counter'. |
| width | integer | – | Screen width in pixels (default 1920 — landscape). |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object|null | yes | – |
| undo | object | – | – |
| warnings | array|null | – | – |
No examples provided.
create_media_folder Create media folder ~77
Create a folder in the media library, where the workspace keeps its photos and videos, such as 'Menus', at the top level or inside another folder.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Folder name, 1 to 200 characters. |
| parentFolderId | string|null | – | Folder to create it in; the top level when omitted. |
Structured output declared, but exposes no named fields.
No examples provided.
create_source Create content source ~322
Create a content source InfoSlides fetches by itself, e.g. a news RSS feed for the ticker or a weather forecast for a slide. adapterType and the config fields come from list_adapters. For weather, config needs the place location: the latitude and longitude of the town or city the forecast is for, not where the person is. locationName is the place name shown on the slide. InfoSlides does not look up place names, so use the coordinates you know for the named place, ask which one when the name could be several places, and always set locationName. Weather comes as CurrentWeather (conditions now) or WeatherForecast (a 3-day outlook in six 12-hour slots); ask which one the person wants when their words leave it open. To put it on a slideshow, add_dynamic_slide with this source's id as sourceId. For data your own system sends, use a push template instead (create_template with dataMode push, then add_dynamic_slide). Secrets in config (API keys, tokens) are write-only: they are never returned. Plans without live sources return EntitlementRequired with an upgrade link.
| Name | Type | Req | Description |
|---|---|---|---|
| adapterType | string | yes | Adapter type from list_adapters, e.g. 'RssFeed'. |
| config | object|null | – | Config object as JSON, e.g. {"feedUrl":"https://..."}. |
| fetchIntervalSeconds | integer|null | – | Fetch interval in seconds (default 3600). |
| name | string | yes | Display name, e.g. 'RÚV news'. |
Structured output declared, but exposes no named fields.
No examples provided.
create_source_key Create source API key ~155
Create a push-only key for a push source, to give to the system that sends its data. The key can push to this one source and do nothing else. It is returned once: show it to the user or store it where the system can read it, because it cannot be shown again. The answer also has quickUpdateUrl, a phone page with large buttons and no login where a person updates the board by hand: give that link to the person when nobody has a system to send the data. Revoking the key ends the link.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string|null | – | A label for the key, e.g. the system that will use it. |
| sourceId | string | yes | Id of the push source. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object|null | yes | – |
| undo | object | – | – |
| warnings | array|null | – | – |
No examples provided.
create_takeover Start screen takeover ~180
Take over one or more screens for a while, e.g. a fire drill notice for 30 minutes or a launch announcement on every screen until 17:00, then return them to their schedule by themselves. Give deviceIds (one or more screens), the slideshow, and either durationMinutes or endsAt. Without an end it runs until end_takeover.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceIds | array | yes | Ids of the screens to take over. |
| durationMinutes | integer|null | – | How long, in minutes. |
| endsAt | string|null | – | Optional end, read like startsAt. |
| slideshowId | string | yes | The slideshow to show. |
| startsAt | string|null | – | Optional start, e.g. '2026-10-01T09:00' (workspace local time) or with Z/offset; default now. |
Structured output declared, but exposes no named fields.
No examples provided.
create_template Create slide template ~379
Design a screen layout that fills itself in from live data, so the display stays current without anyone editing it — today's soup and price, the current exchange rate, a live sales counter, the next departure time. Requires a paid plan. Two ways to build it: describe the look in 'prompt' and give an example of the data in 'sampleJson', or hand over finished 'html' with {{field}} placeholders plus optional 'css' (leave sampleJson out: the placeholders are the fields). That shape is what every later push must match. Set dataMode='push' when the data will come from the user's own system (a queue, meters, scores): the slide then gets a push source, stays hidden until the first data arrives, and every plan includes one such live data slide, the free plan too (code mode). Design rules and a worked example: https://infoslides.app/blog/agents-guide-to-the-infoslides-galaxy. Set dryRun=true to check it without creating anything.
| Name | Type | Req | Description |
|---|---|---|---|
| css | string|null | – | Optional stylesheet for the custom HTML (code mode). |
| dataMode | string|null | – | 'push' when an outside system will send the data (gives the slide a push source); omit otherwise. |
| dryRun | boolean | – | Check the layout without creating it. |
| html | string|null | – | Finished HTML with {{field}} placeholders (code mode). |
| prompt | string|null | – | Description of how the slide should look (AI mode). Requires sampleJson. |
| sampleJson | object|null | – | Example of the data this slide will show, as JSON (AI mode only, with prompt). Defines the shape update_source must send. |
| title | string | yes | What this layout is for, e.g. 'Soup of the day' or 'Live sales board'. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object|null | yes | – |
| undo | object | – | – |
| warnings | array|null | – | – |
No examples provided.
create_tenant Create workspace ~374
Start here when someone wants content on a TV or screen but has no InfoSlides account yet — a café putting its menu on a screen, a hotel with a lobby display, a school noticeboard, a shop window. Sets up their workspace and returns the Primary Admin API Key used by every later call. This is the only tool that needs no credentials. The new account lands on the permanent free plan: 1 screen, 4 slideshows, no credit card, nothing expires. Before creating it, give the person the Terms of Service (https://infoslides.app/terms) and Privacy Policy (https://infoslides.app/privacy) links. ownerEmail must be an address you can open right now, never an invented one: your own is recommended, so you can verify it at once and then add the person with invite_team_member. Adding a screen fails with EmailNotVerified until the address is verified. Pass ownerName (the person's first name) only when you already know it or it is free to ask; never invent one. It is what emails greet them with.
| Name | Type | Req | Description |
|---|---|---|---|
| locale | string|null | – | Optional locale for number and date formats, e.g. 'en-GB'. |
| ownerEmail | string | yes | Email address of the owner. Receives the verification email and the sign-in details. |
| ownerName | string|null | – | Optional name of the person who owns the workspace (first name is fine, at most 100 characters). Without it emails greet the workspace name. |
| tenantName | string | yes | Name of the workspace — usually the company, venue, or shop name, e.g. 'Acme Cafe'. |
| timeZone | string|null | – | Optional IANA time zone, e.g. 'Europe/London'; decides when schedules switch and what clocks show. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object|null | yes | – |
| undo | object | – | – |
| warnings | array|null | – | – |
No examples provided.
deactivate_member Turn off team member access ~63
Turn off a team member's access without removing them (ids from list_team); reactivate_member turns it back on. Confirm with the person first. The last active admin cannot be turned off. Workspace admins only.
| Name | Type | Req | Description |
|---|---|---|---|
| memberId | string | yes | Id of the member. |
Structured output declared, but exposes no named fields.
No examples provided.
delete_device Remove screen ~95
Remove a screen from the workspace, as the Devices page does: it stops playing, no longer counts against the plan's screen limit and leaves list_devices. Its schedule and pairing are kept. Say which screen by name and get the person's yes first. The result carries an undo token that brings it back (which fails with DeviceLimitReached if the plan has filled up since).
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | Id of the screen. |
Structured output declared, but exposes no named fields.
No examples provided.
delete_media Delete media file ~73
Delete a file from the media library for good and free its storage. Confirm with the person first. Refused while a slide uses the file: the error lists those slides (slideId, slideshowId, slideshowTitle), so change or remove them first.
| Name | Type | Req | Description |
|---|---|---|---|
| mediaAssetId | string | yes | Id of the media file. |
Structured output declared, but exposes no named fields.
No examples provided.
delete_media_folder Delete media folder ~60
Delete an empty folder from the media library (the place photos and videos are kept). Refused while it still holds files or folders; move or delete those first. Confirm with the person first.
| Name | Type | Req | Description |
|---|---|---|---|
| folderId | string | yes | Id of the folder. |
Structured output declared, but exposes no named fields.
No examples provided.
delete_schedule_entry Delete schedule entry ~61
Remove one timed entry from a screen's schedule (ids from get_schedule). The screen falls back to its default content in that window.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | Id of the screen. |
| entryId | string | yes | Id of the schedule entry. |
Structured output declared, but exposes no named fields.
No examples provided.
delete_slide Delete slide ~89
Remove one slide from a slideshow for good: the Christmas slide once it is over, a wrong photo, a page nobody wants. The slides after it close up and any rule on it goes too. If the slide may come back later, hide it with update_slide instead. Confirm with the person first unless they clearly asked for it.
| Name | Type | Req | Description |
|---|---|---|---|
| slideId | string | yes | Id of the slide to remove. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object|null | yes | – |
| undo | object | – | – |
| warnings | array|null | – | – |
No examples provided.
delete_slideshow Delete slideshow ~108
Delete a slideshow for good: the old lunch menu, a campaign that has ended, a test deck. Its schedules are removed and any screen playing it stops showing it at its next check-in. restore_slideshow can bring it back for a while, but not its schedules, so confirm with the person first unless they clearly asked for it. To take one slide out, use delete_slide or hide it with update_slide instead.
| Name | Type | Req | Description |
|---|---|---|---|
| slideshowId | string | yes | Id of the slideshow to delete. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object|null | yes | – |
| undo | object | – | – |
| warnings | array|null | – | – |
No examples provided.
delete_source Delete content source ~41
Delete a content source. Slides and tickers fed by it stop updating. Confirm with the person first.
| Name | Type | Req | Description |
|---|---|---|---|
| sourceId | string | yes | Id of the source. |
Structured output declared, but exposes no named fields.
No examples provided.
delete_template Delete slide template ~64
Delete a layout the workspace owns, for good. Confirm with the person first. Refused while a slide uses it: the error lists those slides, so change or remove them first. Built-in layouts cannot be deleted.
| Name | Type | Req | Description |
|---|---|---|---|
| templateId | string | yes | Id of the template. |
Structured output declared, but exposes no named fields.
No examples provided.
end_takeover End screen takeover ~38
End a takeover now; the screen goes back to its schedule within about a minute.
| Name | Type | Req | Description |
|---|---|---|---|
| takeoverId | string | yes | Id of the takeover. |
Structured output declared, but exposes no named fields.
No examples provided.
fetch_source_now Refresh content source now ~81
Ask InfoSlides to fetch a source (RSS, weather, calendar) right now instead of waiting for its next scheduled fetch. The fetch runs in the background: call get_source_status after a few seconds to see the new health. Limited to 10 calls a minute per workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| sourceId | string | yes | Id of the source (from list_sources). |
Structured output declared, but exposes no named fields.
No examples provided.
get_ai_slide_job Get AI slide generation job ~101
Check an AI-designed slide job: Processing, Ready (previews to show the person), Inserted, NeedsClarification (read its question out, then start a new job with the answer in the prompt) or Failed. Jobs are kept for 24 hours. Poll at most every 5 seconds.
| Name | Type | Req | Description |
|---|---|---|---|
| jobId | string | yes | Id of the job from make_ai_slide. |
| slideshowId | string | yes | The slideshow the job belongs to. |
Structured output declared, but exposes no named fields.
No examples provided.
get_article Read InfoSlides article ~77
Read one InfoSlides help article, blog post or release note as Markdown, with the same fields as a search result. Pass on what matters to the person in your own words and link the url.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | The slug from search_articles or get_platform_version. |
| type | string | yes | help, blog or release-note. |
Structured output declared, but exposes no named fields.
No examples provided.
get_audit_trail Get audit trail ~284
"Who changed this?" The workspace's audit trail, newest first: time, action (e.g. SlideshowDeleted), entityType, entityId, userId and details. Filter by what it is about (entityType and entityId), who (userId), action, category (User, Tenant, Slideshow, Device, Schedule, Sources, Templates, Billing, Settings, Support, TvDevice, WebClient) and a UTC from/to. action SlideshowDeleted finds the id restore_slideshow needs. Workspace admins only.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string|null | – | Only this action, e.g. SlideshowDeleted. |
| category | string|null | – | Only this category, e.g. Device. |
| entityId | string|null | – | Only events about this id. |
| entityType | string|null | – | Only events about this kind of thing, e.g. Slideshow. |
| from | string|null | – | From this time, UTC, e.g. 2026-10-01T00:00:00Z. |
| page | integer|null | – | Page number, from 1. |
| pageSize | integer|null | – | Items per page, 1 to 100 (default 25). |
| to | string|null | – | Up to this time, UTC. |
| userId | string|null | – | Only events by this user id. |
Structured output declared, but exposes no named fields.
No examples provided.
get_billing Get billing summary ~139
Which plan the workspace is on and when it renews. Returns the plan with its prices, the status (free, active, cancelling, paused, past_due, cancelled or suspended), renewsAt (empty when the plan does not renew or the date could not be read), endsAt when a cancellation is already scheduled, and what is used against each limit: slideshows, devices, users and storageMb, each as used and limit. invoicesUrl points a person at their invoices. Read-only and without card data; changing the plan, pausing or cancelling is done by the person in the web app. Needs a workspace admin key.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
get_brand_guide Get brand guide ~95
Read the workspace's brand guide before making slides so they match the company: colours, fonts, logos, voice, picture style and layout. 'inUse' is what slides are made from, 'draft' is the working copy. If 'waitingForApproval' is true a person still has to confirm the draft on the Brand page (brandPageUrl): tell them, because slides keep using the confirmed version until then.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
get_device_diagnosis Diagnose screen issues ~103
"Why is the lobby screen black?" Lists every cause that could explain a screen looking wrong, most likely first: offline since a time, an empty or failed slideshow, nothing scheduled, every slide hidden by its rules, expired plan, or paired elsewhere. Each cause has a sentence to read out and, where there is one, a ready-made fix request. No causes means the screen looks healthy.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | Id of the screen. |
Structured output declared, but exposes no named fields.
No examples provided.
get_device_plays Get screen play time ~91
"How long did the lobby screen play, and what?" Estimated minutes per day for each slideshow the screen played. Estimated from screen heartbeats, not exact: say so when you report it.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | The screen. |
| from | string | yes | Start date, yyyy-MM-dd (UTC day). |
| to | string | yes | End date, yyyy-MM-dd (UTC day). |
Structured output declared, but exposes no named fields.
No examples provided.
get_device_status Get screen status ~77
Find out whether a screen is actually on and what it is showing right now — is the TV live, when did it last check in, which content is playing. This is the tool to reach for when someone says the screen is blank, frozen, or showing the wrong thing.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | Id of the device. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object|null | yes | – |
| undo | object | – | – |
| warnings | array|null | – | – |
No examples provided.
get_error_log Get error log ~189
The workspace's error log, newest first, as a workspace admin sees it in the web app: time, level (Warning, Error, Critical), component, message, entityType, entityId and acknowledged. Use it to explain a failed render or a source that stopped. Filter by level, component, acknowledged and a UTC from/to. Workspace admins only.
| Name | Type | Req | Description |
|---|---|---|---|
| acknowledged | boolean|null | – | True for acknowledged errors only, false for new ones only. |
| component | string|null | – | Only errors from this component. |
| from | string|null | – | From this time, UTC. |
| level | string|null | – | Warning, Error or Critical. |
| page | integer|null | – | Page number, from 1. |
| pageSize | integer|null | – | Items per page, 1 to 100 (default 25). |
| to | string|null | – | Up to this time, UTC. |
Structured output declared, but exposes no named fields.
No examples provided.
get_media Get media file status ~74
Check whether an uploaded file is ready to use: processingStatus (Ready, Queued, Processing or Failed), progressPercent while a video is being prepared, and error when it failed. Images and documents are always Ready. Poll at most every 5 seconds.
| Name | Type | Req | Description |
|---|---|---|---|
| mediaAssetId | string | yes | Id of the media file. |
Structured output declared, but exposes no named fields.
No examples provided.
get_now_slide_png Get current slide preview ~86
"What's on the lobby screen?" Returns the slide the screen should be showing right now as an image, worked out from its schedule, takeovers, slide rules and slide durations. It is what should be on the screen, not a camera: an offline TV may show something else, so check get_device_status too.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | Id of the screen. |
No output schema declared.
No examples provided.
get_offline_alerts Get offline alert settings ~60
"When do I get emails about screens going offline?" Shows the workspace's quiet hours and, per screen, whether alerts are on, its own quiet hours and whether it follows its schedule. At most one alert per screen per day is sent.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
get_platform_notices Get InfoSlides notices ~93
Notices from the InfoSlides team that are still active, newest first (an empty list when there are none). Each has kind (SystemUpdate for an update or maintenance window, NewFeature for news), title, message, postedAt, startsAt (when the update begins, or null) and expiresAt. When a SystemUpdate notice is active, tell the person what is coming and when, using startsAt.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
get_platform_version Get InfoSlides version ~111
Which InfoSlides release is running: version (for example v1.10.2), build (changes with every deploy), deployedAt, and releaseNotes, the published release notes of this version as title, slug and url. Remember the version; when it has changed since you last looked, tell the person an update is live and read the release notes with get_article (type release-note). An empty releaseNotes list means the notes are not written yet, so check again later instead of guessing what changed.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
get_schedule Get screen schedule entries ~77
See a screen's schedule: its default content and any timed entries (breakfast menu 6-11, lunch menu 11-15), in the workspace time zone. Say which time zone it is when you read the times out. Use the entry ids with delete_schedule_entry.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | Id of the screen. |
Structured output declared, but exposes no named fields.
No examples provided.
get_show_status Get show progress ~97
Check a photo or video sent with show_media_on_device: one combined percent for the video processing and the slideshow render, and status Processing, Ready or Failed. Poll at most every 5 seconds.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | Id of the screen. |
| mediaAssetId | string | yes | mediaAssetId from the show_media_on_device result. |
| slideshowId | string | yes | slideshowId from the show_media_on_device result. |
Structured output declared, but exposes no named fields.
No examples provided.
get_slide_design Get text slide design ~94
Read the design behind a slide made with add_designed_slide, in the same fields that tool takes (design: heading, text, cta, the background, imageMediaAssetId, branding, layout, durationSeconds), so you can change one and send the whole design back with update_slide_design. A slide that was not made that way answers NotFound.
| Name | Type | Req | Description |
|---|---|---|---|
| slideId | string | yes | Id of the slide. |
Structured output declared, but exposes no named fields.
No examples provided.
get_slideshow Get slideshow details ~135
Look inside one piece of screen content: every slide (its type, whether it is hidden, how long it is shown, a thumbnailUrl, and every rule about when it appears), the order they play in, the ticker, clock and default duration, which screens are playing it (screens, each with a playerUrl to hand to the person) and renderStatus. Use this before editing so you know what is already there, and again after an edit: the change is on the screen once renderStatus is Completed. To look at a slide, call preview_slide.
| Name | Type | Req | Description |
|---|---|---|---|
| slideshowId | string | yes | Id of the slideshow. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object|null | yes | – |
| undo | object | – | – |
| warnings | array|null | – | – |
No examples provided.
get_slideshow_plays Get slideshow play time ~109
"Where did the Q1 slideshow run last week?" Estimated minutes per day on each screen that played the slideshow, with a total and an approximate loop count. Estimated from screen heartbeats, not exact, and there are no per-slide counts: say so when you report it.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | yes | Start date, yyyy-MM-dd (UTC day). |
| slideshowId | string | yes | The slideshow. |
| to | string | yes | End date, yyyy-MM-dd (UTC day). |
Structured output declared, but exposes no named fields.
No examples provided.
get_source_fields Get content source fields ~71
List the fields a source's items have (key, label and a sample value from its latest item), to decide which template fields to fill from it. Empty until the source has fetched something: fetch_source_now asks for that.
| Name | Type | Req | Description |
|---|---|---|---|
| sourceId | string | yes | Id of the source (from list_sources). |
Structured output declared, but exposes no named fields.
No examples provided.
How do I install the InfoSlides — put content on a TV or screen MCP server?
InfoSlides — put content on a TV or screen ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, f36a3060d3f9591c0facb0dfaa86d9f20dcb4e734858124596b94f683dcc1d8c; the commands to do that are on this page. If it does not match, do not open it.
mcpb · infoslides-mcp-v1.9.0.mcpb
Download bundleCheck the download matches the SHA-256 the MCP registry declares before you open it. If it does not match, do not open the file.
SHA-256
f36a3060d3f9591c0facb0dfaa86d9f20dcb4e734858124596b94f683dcc1d8c
macOS / Linux
echo "f36a3060d3f9591c0facb0dfaa86d9f20dcb4e734858124596b94f683dcc1d8c infoslides-mcp-v1.9.0.mcpb" | shasum -a 256 -c
Windows (PowerShell)
(Get-FileHash -Algorithm SHA256 .\infoslides-mcp-v1.9.0.mcpb).Hash -eq "f36a3060d3f9591c0facb0dfaa86d9f20dcb4e734858124596b94f683dcc1d8c"
Run it in the folder you saved the bundle to, then open the file with an MCPB-capable host such as Claude Desktop.
What is the InfoSlides — put content on a TV or screen MCP server?
InfoSlides — put content on a TV or screen is an MCP server listed in the public MCP registry as io.github.arnibj/infoslides. Put a PowerPoint, PDF, photo, or live data on any smart TV, menu board, or lobby screen. This page covers its MCPB bundle (https://github.com/arnibj/InfoSlides.MCP/releases/download/v1.9.0/infoslides-mcp-v1.9.0.mcpb).
Is the InfoSlides — put content on a TV or screen MCP server safe to use?
InfoSlides — put content on a TV or screen scores 60 out of 100 on VerifyMCP. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the InfoSlides — put content on a TV or screen MCP server expose?
InfoSlides — put content on a TV or screen exposes 120 tools: invite_team_member, update_template, test_source_config, report_issue, list_brand_previews, and 115 more. Their descriptions and schemas cost roughly 16,532 tokens of context every time the server is loaded.
What licence is the InfoSlides — put content on a TV or screen MCP server under?
InfoSlides — put content on a TV or screen declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.