Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

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.

+14 this week 60 Trust /100

Last scanned (19 hours ago)

Scores higher than 93% of MCPB servers

Category Design and Media

Trust breakdown (7 categories)

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.

Changelog

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
Diagnostics

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 →

MCP tools · 120 exposed · ~16,532 tokens

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 →

Tool Tokens
add_designed_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.

NameTypeReqDescription
backgroundColorstring|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.
brandingboolean|null–true adds the workspace logo and accent colour; a workspace without a logo gets nothing added.
ctastring|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).
durationSecondsnumber|null–How long the slide stays on screen, in seconds, from 1 to 99; sized to the text when omitted.
headingstringyesThe headline. About 60 characters fit (50 to 80 beside a picture, depending on the screen); longer text is refused with the number that fits.
imageMediaAssetIdstring|null–Id of an image in the media library to show beside the text; omit when using imageUrl.
imageUrlstring|null–Publicly reachable URL of an image to show beside the text; omit when using imageMediaAssetId.
layoutstring|null–heading, heading-text, heading-text-cta, heading-image-right or heading-image-left. Chosen from the fields given when omitted.
mediaAssetIdstring|null–Id of an image already in the media library to use as the background.
mediaUrlstring|null–Publicly reachable URL of an image to use as the background.
positioninteger|null–Zero-based position in the loop; appended when omitted.
slideshowIdstringyesId of the slideshow to add the slide to.
stockPhotoobject|null–A stock photo background: one search_stock_images result as given (photoId, downloadLocation, fullUrl and the photographer credit fields).
textstring|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.
NameTypeReqDescription
dataobject|nullyes–
undoobject––
warningsarray|null––

No examples provided.

add_dynamic_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.

NameTypeReqDescription
createPushKeyboolean–For a push template: also create a push-only key for the new push source.
durationSecondsnumber|null–How long the slide stays on screen, in seconds.
positioninteger|null–Zero-based position in the loop; appended when omitted.
slideshowIdstringyesId of the slideshow to add the slide to.
sourceIdstring|null–A fetched source (weather, RSS feed) to bind to the slide; its type must match the template's. Omit for a push template.
templateIdstringyesId of a template (from create_template/list_templates).
NameTypeReqDescription
dataobject|nullyes–
undoobject––
warningsarray|null––

No examples provided.

add_media_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.

NameTypeReqDescription
durationSecondsnumber|null–How long the slide stays on screen, in seconds.
mediaAssetIdstring|null–Id of a file already in the media library (e.g. from upload_media); omit when using mediaUrl.
mediaUrlstring|null–Publicly reachable URL of the image/video; omit when using mediaAssetId.
positioninteger|null–Zero-based position in the loop; appended when omitted.
slideshowIdstringyesId of the slideshow to add the slide to.
NameTypeReqDescription
dataobject|nullyes–
undoobject––
warningsarray|null––

No examples provided.

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.

NameTypeReqDescription
deviceIdstringyesId of the screen.
endTimestringyesEnd time, HH:mm, e.g. '11:00'.
priorityinteger–Priority where windows overlap (default 0).
slideshowIdstringyesThe slideshow to play in the window.
startTimestringyesStart time, HH:mm, e.g. '06:00'.

Structured output declared, but exposes no named fields.

No examples provided.

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.

NameTypeReqDescription
durationSecondsinteger|null–Seconds per slide (default 10).
hideWhenEmptyboolean|null–Whether the first slide hides itself when it has no alerts (the later ones always do).
positioninteger|null–Zero-based position of the first slide; appended when omitted.
slideshowIdstringyesId of the slideshow.
sourceIdstringyesId of a WeatherAlert source.
templateIdstring|null–A weather alert timeline template; found for you when omitted.

Structured output declared, but exposes no named fields.

No examples provided.

assign_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.

NameTypeReqDescription
deviceIdstringyesId of the device.
slideshowIdsarrayyesIds of the slideshows to play, in order.
NameTypeReqDescription
dataobject|nullyes–
undoobject––
warningsarray|null––

No examples provided.

check_brand ~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.

NameTypeReqDescription
slideshowIdstringyesId of the slideshow.

Structured output declared, but exposes no named fields.

No examples provided.

check_slideshow ~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.

NameTypeReqDescription
slideshowIdstringyesId of the slideshow.

Structured output declared, but exposes no named fields.

No examples provided.

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.

NameTypeReqDescription
fromGalleryboolean–Clone a ready-made gallery design instead of the workspace's own slideshow.
sourceIdstringyesId of the source slideshow, or gallery item id when fromGallery=true.
NameTypeReqDescription
dataobject|nullyes–
undoobject––
warningsarray|null––

No examples provided.

clone_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.

NameTypeReqDescription
templateIdstringyesId of the template to copy.

Structured output declared, but exposes no named fields.

No examples provided.

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.

NameTypeReqDescription
namestringyesWhat this key is for, e.g. 'till-system-lunch-price'.
slideIdsarray|null–Ids of the slides a push-only key may feed. Required for dataProvider keys.
typestringyesKey type: 'admin' for full access, or 'dataProvider' for a push-only key.
NameTypeReqDescription
dataobject|nullyes–
undoobject––
warningsarray|null––

No examples provided.

create_broadcast_device ~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.

NameTypeReqDescription
namestringyesName of the channel, e.g. 'Lobby channel'.
slideshowIdstring|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 ~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.

NameTypeReqDescription
heightinteger–Screen height in pixels (default 1080 — landscape).
namestringyesWhat this screen is and where it is, e.g. 'Lobby screen' or 'Menu board — counter'.
widthinteger–Screen width in pixels (default 1920 — landscape).
NameTypeReqDescription
dataobject|nullyes–
undoobject––
warningsarray|null––

No examples provided.

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.

NameTypeReqDescription
namestringyesFolder name, 1 to 200 characters.
parentFolderIdstring|null–Folder to create it in; the top level when omitted.

Structured output declared, but exposes no named fields.

No examples provided.

create_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.

NameTypeReqDescription
adapterTypestringyesAdapter type from list_adapters, e.g. 'RssFeed'.
configobject|null–Config object as JSON, e.g. {"feedUrl":"https://..."}.
fetchIntervalSecondsinteger|null–Fetch interval in seconds (default 3600).
namestringyesDisplay name, e.g. 'RÚV news'.

Structured output declared, but exposes no named fields.

No examples provided.

create_source_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.

NameTypeReqDescription
namestring|null–A label for the key, e.g. the system that will use it.
sourceIdstringyesId of the push source.
NameTypeReqDescription
dataobject|nullyes–
undoobject––
warningsarray|null––

No examples provided.

create_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.

NameTypeReqDescription
deviceIdsarrayyesIds of the screens to take over.
durationMinutesinteger|null–How long, in minutes.
endsAtstring|null–Optional end, read like startsAt.
slideshowIdstringyesThe slideshow to show.
startsAtstring|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 ~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.

NameTypeReqDescription
cssstring|null–Optional stylesheet for the custom HTML (code mode).
dataModestring|null–'push' when an outside system will send the data (gives the slide a push source); omit otherwise.
dryRunboolean–Check the layout without creating it.
htmlstring|null–Finished HTML with {{field}} placeholders (code mode).
promptstring|null–Description of how the slide should look (AI mode). Requires sampleJson.
sampleJsonobject|null–Example of the data this slide will show, as JSON (AI mode only, with prompt). Defines the shape update_source must send.
titlestringyesWhat this layout is for, e.g. 'Soup of the day' or 'Live sales board'.
NameTypeReqDescription
dataobject|nullyes–
undoobject––
warningsarray|null––

No examples provided.

create_tenant ~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.

NameTypeReqDescription
localestring|null–Optional locale for number and date formats, e.g. 'en-GB'.
ownerEmailstringyesEmail address of the owner. Receives the verification email and the sign-in details.
ownerNamestring|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.
tenantNamestringyesName of the workspace — usually the company, venue, or shop name, e.g. 'Acme Cafe'.
timeZonestring|null–Optional IANA time zone, e.g. 'Europe/London'; decides when schedules switch and what clocks show.
NameTypeReqDescription
dataobject|nullyes–
undoobject––
warningsarray|null––

No examples provided.

deactivate_member ~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.

NameTypeReqDescription
memberIdstringyesId of the member.

Structured output declared, but exposes no named fields.

No examples provided.

delete_device ~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).

NameTypeReqDescription
deviceIdstringyesId of the screen.

Structured output declared, but exposes no named fields.

No examples provided.

delete_media ~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.

NameTypeReqDescription
mediaAssetIdstringyesId of the media file.

Structured output declared, but exposes no named fields.

No examples provided.

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.

NameTypeReqDescription
folderIdstringyesId of the folder.

Structured output declared, but exposes no named fields.

No examples provided.

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.

NameTypeReqDescription
deviceIdstringyesId of the screen.
entryIdstringyesId of the schedule entry.

Structured output declared, but exposes no named fields.

No examples provided.

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.

NameTypeReqDescription
slideIdstringyesId of the slide to remove.
NameTypeReqDescription
dataobject|nullyes–
undoobject––
warningsarray|null––

No examples provided.

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.

NameTypeReqDescription
slideshowIdstringyesId of the slideshow to delete.
NameTypeReqDescription
dataobject|nullyes–
undoobject––
warningsarray|null––

No examples provided.

delete_source ~41

Delete a content source. Slides and tickers fed by it stop updating. Confirm with the person first.

NameTypeReqDescription
sourceIdstringyesId of the source.

Structured output declared, but exposes no named fields.

No examples provided.

delete_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.

NameTypeReqDescription
templateIdstringyesId of the template.

Structured output declared, but exposes no named fields.

No examples provided.

end_takeover ~38

End a takeover now; the screen goes back to its schedule within about a minute.

NameTypeReqDescription
takeoverIdstringyesId of the takeover.

Structured output declared, but exposes no named fields.

No examples provided.

fetch_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.

NameTypeReqDescription
sourceIdstringyesId of the source (from list_sources).

Structured output declared, but exposes no named fields.

No examples provided.

get_ai_slide_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.

NameTypeReqDescription
jobIdstringyesId of the job from make_ai_slide.
slideshowIdstringyesThe slideshow the job belongs to.

Structured output declared, but exposes no named fields.

No examples provided.

get_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.

NameTypeReqDescription
slugstringyesThe slug from search_articles or get_platform_version.
typestringyeshelp, blog or release-note.

Structured output declared, but exposes no named fields.

No examples provided.

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.

NameTypeReqDescription
actionstring|null–Only this action, e.g. SlideshowDeleted.
categorystring|null–Only this category, e.g. Device.
entityIdstring|null–Only events about this id.
entityTypestring|null–Only events about this kind of thing, e.g. Slideshow.
fromstring|null–From this time, UTC, e.g. 2026-10-01T00:00:00Z.
pageinteger|null–Page number, from 1.
pageSizeinteger|null–Items per page, 1 to 100 (default 25).
tostring|null–Up to this time, UTC.
userIdstring|null–Only events by this user id.

Structured output declared, but exposes no named fields.

No examples provided.

get_billing ~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 ~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 ~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.

NameTypeReqDescription
deviceIdstringyesId of the screen.

Structured output declared, but exposes no named fields.

No examples provided.

get_device_plays ~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.

NameTypeReqDescription
deviceIdstringyesThe screen.
fromstringyesStart date, yyyy-MM-dd (UTC day).
tostringyesEnd date, yyyy-MM-dd (UTC day).

Structured output declared, but exposes no named fields.

No examples provided.

get_device_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.

NameTypeReqDescription
deviceIdstringyesId of the device.
NameTypeReqDescription
dataobject|nullyes–
undoobject––
warningsarray|null––

No examples provided.

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.

NameTypeReqDescription
acknowledgedboolean|null–True for acknowledged errors only, false for new ones only.
componentstring|null–Only errors from this component.
fromstring|null–From this time, UTC.
levelstring|null–Warning, Error or Critical.
pageinteger|null–Page number, from 1.
pageSizeinteger|null–Items per page, 1 to 100 (default 25).
tostring|null–Up to this time, UTC.

Structured output declared, but exposes no named fields.

No examples provided.

get_media ~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.

NameTypeReqDescription
mediaAssetIdstringyesId of the media file.

Structured output declared, but exposes no named fields.

No examples provided.

get_now_slide_png ~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.

NameTypeReqDescription
deviceIdstringyesId of the screen.

No output schema declared.

No examples provided.

get_offline_alerts ~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 ~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 ~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 ~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.

NameTypeReqDescription
deviceIdstringyesId of the screen.

Structured output declared, but exposes no named fields.

No examples provided.

get_show_status ~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.

NameTypeReqDescription
deviceIdstringyesId of the screen.
mediaAssetIdstringyesmediaAssetId from the show_media_on_device result.
slideshowIdstringyesslideshowId from the show_media_on_device result.

Structured output declared, but exposes no named fields.

No examples provided.

get_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.

NameTypeReqDescription
slideIdstringyesId of the slide.

Structured output declared, but exposes no named fields.

No examples provided.

get_slideshow ~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.

NameTypeReqDescription
slideshowIdstringyesId of the slideshow.
NameTypeReqDescription
dataobject|nullyes–
undoobject––
warningsarray|null––

No examples provided.

get_slideshow_plays ~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.

NameTypeReqDescription
fromstringyesStart date, yyyy-MM-dd (UTC day).
slideshowIdstringyesThe slideshow.
tostringyesEnd date, yyyy-MM-dd (UTC day).

Structured output declared, but exposes no named fields.

No examples provided.

get_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.

NameTypeReqDescription
sourceIdstringyesId of the source (from list_sources).

Structured output declared, but exposes no named fields.

No examples provided.

Install

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 bundle

Check 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.

Common questions

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.