# Agent Guide for InfoSlides

---
**Metadata:**
- **Estimated Tokens:** ~1200 tokens
- **Target:** AI Agents, Developers, Automation Scripts
- **Last Updated:** 2026-07-27
---

## What InfoSlides Does

InfoSlides is a DOOH (Digital Out-of-Home) and digital signage SaaS platform. It converts PowerPoint (.pptx) presentations into continuous HLS video streams, which are delivered to smart TVs and display devices. Users manage content, devices, and schedules through a web application at https://infoslides.app.

## Technical Constraints & Standards

- **Resolutions:** Preferred 1920x1080 (1080p). Supports 720p and square formats.
- **File Support:** Native .pptx upload is the primary ingestion method. Google Slides support is via export.
- **Rendering:** All slides are transcoded to HLS video streams using LibreOffice and FFmpeg server-side.
- **Dynamic Slides:** Templates can pull live data from RSS feeds, weather APIs, and other content sources, and are re-rendered automatically when data updates.
- **Ticker:** A scrolling news/data ticker can be added to the bottom of any stream.

## Operational Instructions

- **Pairing Process:** A display device generates a 6-digit pairing code. Enter this code in the /devices dashboard to register the device to a tenant account.
- **Dynamic Content:** When an RSS feed or weather source updates, the system triggers an automatic re-render of the video stream. No manual action is required.
- **Scheduling:** Content transitions happen server-side. The physical device does not need to be manually refreshed to reflect schedule changes.
- **Content Aggregator:** A standalone Windows application (the Aggregator) collects data from external sources and pushes content items to the platform. It runs as a background service on a Windows machine.

## Authentication

- **Interactive web dashboard:** OAuth only. Supported providers: Google, Microsoft, Apple ID. There are no username/password accounts, and all dashboard routes (/dashboard, /devices, /slideshows, etc.) require an authenticated session.
- **Programmatic access (CLI / MCP / REST):** uses API keys (`isk_...`) sent as a bearer token — no OAuth delegation required. An anonymous `create_tenant` call bootstraps a brand-new account and returns its admin API key, so an agent can provision from scratch. Admin and push-only (data-provider) keys can also be issued from the dashboard. The backend enforces all plan entitlements regardless of how a request authenticates. See the CLI & MCP section below.

## REST API (`/v1`)

The CLI and MCP server are thin clients over a public REST surface. It can be called directly.

- **Human-readable reference:** https://infoslides.app/docs/api — every endpoint, the success/error envelope shape, API key formats (`isk_admin_` full admin, `isk_dp_` push-only), the error-code catalogue, and which endpoints honour `Idempotency-Key`.
- **OpenAPI 3 document:** https://infoslides.app/v1/openapi.json — served anonymously, no credential required to fetch.
- **Base URL:** `https://infoslides.app`
- **Auth:** `Authorization: Bearer isk_admin_…`. `POST /v1/tenants` is the single anonymous endpoint — it provisions a workspace on the permanent free plan and returns its admin key exactly once. It accepts an optional `source` field (`web`, `api`, `cli`, `mcp`) so agent-originated signups are attributable.
- **Idempotency:** creating endpoints accept an `Idempotency-Key` header (≤128 chars); a repeat within 24 hours replays the original response with `Idempotent-Replay: true`.

## Key Concepts

- **Tenant:** A business or organisation with a licensed InfoSlides account.
- **Slideshow:** A .pptx file uploaded to the platform, owned by a tenant.
- **Device:** A registered smart TV or display screen.
- **Stream:** The HLS video output generated from a slideshow, served to devices.
- **Schedule:** Time-based rules controlling which slideshow plays on a device and when.
- **ContentSource:** A configured data source (RSS feed, weather API, etc.) used for dynamic slides.
- **Dynamic Slide:** A template-driven slide that merges live data from a content source at render time.

## AI Studio

AI Studio is a built-in chat assistant available on Starter and higher plans. It generates finished signage slides from six input paths:

| Input                 | Handler               | Output type | Output                                                               |
| --------------------- | --------------------- | ----------- | -------------------------------------------------------------------- |
| Text prompt           | generate-slide        | Static PNG  | Single slide                                                         |
| Voice memo            | voice-to-slide        | Static PNG  | Single slide (transcribed first)                                     |
| Photo (board / flyer) | photo-to-slide        | Static PNG  | Single slide (vision model reads image)                              |
| Public HTTPS URL      | url-to-slide          | Static PNG  | Single slide (readability extraction)                                |
| PDF / Word / email    | document-to-slideshow | Static PNG  | 4–6 slide batch                                                      |
| CSV / Excel           | spreadsheet-to-slides | Static PNG  | One slide per row                                                    |
| JSON API feed         | build-feed-recipe     | Dynamic     | ContentSource + SlideTemplate + DynamicSlide (live, auto-refreshing) |

The six static handlers render each slide once as a PNG, insert it as a manual asset, and present a preview before inserting. Nothing is published automatically.

`build-feed-recipe` is fundamentally different: it does not produce a static image. It creates a `ContentSource` (the live data feed), a `SlideTemplate`, and a `DynamicSlide` that re-renders automatically each time the source refreshes. The result is a live, always-current slide.

Additional AI capabilities: `edit-slide` (pinned refinement of static slides), `support-search` (help article lookup on the dashboard).

**Key facts for agents:**
- All AI endpoints require `Starter` plan or above
- The agent never invents prices, phone numbers, dates, or names — it copies only what the user supplies.
- Slide generation credits are tracked in `TenantAiUsage` and enforced by a monthly cap.
- AI-generated media assets are tagged `Origin = AiGenerated` and hidden from the media library by default (toggle `includeGenerated=true` to surface them).

## CLI & MCP Server (`infoslides` binary)

InfoSlides ships a single, dependency-free `infoslides` executable (Native AOT, no runtime required) that is **both** a developer CLI and an MCP server for AI agents.

**Download (always the latest release):** https://github.com/arnibj/InfoSlides.MCP/releases/latest
— Windows (`win-x64`), Linux (`linux-x64`), and macOS Apple Silicon (`osx-arm64`) archives, each
with a `sha256sums.txt` checksum. Source: https://github.com/arnibj/InfoSlides.MCP.

**Install into an MCP client:**

```sh
infoslides mcp install --client claude-code      # or claude-desktop / cursor
```

Or configure manually (stdio transport):

```json
{
  "mcpServers": {
    "infoslides": {
      "command": "/path/to/infoslides",
      "args": ["--mcp"],
      "env": { "INFOSLIDES_API_KEY": "isk_admin_..." }
    }
  }
}
```

**MCP tools (27):** tenant provisioning (`create_tenant` is anonymous and returns the admin key), slideshows — including direct `.pptx` upload (`upload_pptx`) — media slides (by URL or direct image/video upload via `upload_media`), visibility conditions (time / weekday / data triggers), dynamic templates (AI prompt or raw HTML/CSS) added with `add_dynamic_slide`, live data pushes (`update_source`), devices, schedules (with `AspectMismatch` warnings), HLS stream links, slide PNG previews, API keys (admin and push-only data-provider keys), and Paddle upgrade links.

**CLI usage:**

```sh
infoslides login                          # OAuth in the browser (Google/Microsoft/GitHub)
infoslides tenant create "Acme Cafe" owner@acme.test --save
infoslides gallery list
infoslides slideshow clone <gallery-id> --from-gallery
infoslides device create "Lobby screen" --width 1080 --height 1920
infoslides schedule assign <device-id> <slideshow-id>
infoslides stream link <device-id>
```

Global options: `--api-url`, `--api-key`, `--json` (machine-readable output). Credential precedence: flags → `INFOSLIDES_API_KEY` / `INFOSLIDES_API_URL` env vars → `~/.infoslides/` config → defaults.

**Key facts for agents:**
- In `--mcp` mode, stdout is the protocol stream — the binary logs only to stderr.
- The backend enforces all entitlements and plan limits; the CLI/MCP layer cannot bypass them.
- A typical flow: anonymous `create_tenant` → admin API key → upload content, register a screen, assign a schedule → live HLS stream, with a Paddle upgrade link unlocking AI templates and higher device limits.
- Tenants created this way land on the permanent free plan (1 screen, 4 slideshows, no expiry, no credit card). The whole flow above can be completed at zero cost and the result keeps running — there is no trial clock to beat.

## Pricing Tiers

**Free plan — permanent, no credit card, no expiry.** Every new tenant starts here, including tenants provisioned anonymously through the API or MCP server. Limits: 1 device, 4 slideshows, 2 users, 200 MB storage. Streams carry a small "Free plan" watermark. Dynamic (live-data) slides, Tier 2/3 content sources, advanced scheduling, and organisation features require a paid plan. There is no trial and nothing expires — an account created by an agent keeps working indefinitely.

Paid tiers add device and storage headroom, live content sources (Tier 2: Professional+, Tier 3: Business+), and AI Studio, which is included on Starter and above. Billing is handled by Paddle; a checkout link can be generated programmatically. For current prices, visit https://infoslides.app.

## Known Limitations

- Very high-resolution images (>4K) may increase render times significantly.
- Real-time data updates depend on the polling interval of the external data source (e.g., weather updates every 15 minutes by default).
- HLS stream generation is asynchronous — there is a processing delay after uploading a new slideshow before the stream is ready.
- Dynamic slide video recording mode (for animated content such as weather maps) requires longer render times than screenshot mode.

## Contact & Support

- Website: https://infoslides.app
- For API or integration enquiries, use the contact form at https://infoslides.app
