# Wignet — prepared content for client AI agents > Wignet lets AI agents publish content to e-paper frames through explicit actions. Wignet is an e-paper frame platform. Client agents retrieve data, compose their images and organise recurring updates. The platform accepts explicit requests, stores standing slides and temporary publications and serves them when the hardware wakes. Manual publication is also available on the owner's page. No business service catalogue or periodic renderer runs on the server. ## One frame, one private link The owner gives https://app.wignet.app/w/. Its unique identifier grants control of this frame only. Never guess it, publish it or substitute another. MCP: https://mcp.wignet.app/, or https://app.wignet.app/mcp with `device` on each device action; describe_device returns a frame's name and link. No required authentication. Read get_state and get_capabilities before writes; get_orientation gives logical image dimensions. set_name names the frame. read_skill lists and reads the guides; read_recipe the use cases built from these tools (a photo slideshow, a smart alarm clock…). The per-frame guide is at `https://app.wignet.app/api/owner//guide` and its OpenAPI description at `https://app.wignet.app/api/owner//openapi.json`. The generic OpenAPI description uses a `mac` path parameter; see the link below. ## Connect, by client Three addresses. The frame's link `https://app.wignet.app/w/` is enough for an agent with HTTP access: read the guide above and call the REST API, sending images as files. The account connector `https://app.wignet.app/mcp/account` (OAuth sign-in with the owner's Wignet account) serves every frame of the account; the frame connector `https://mcp.wignet.app/` serves one frame with no sign-in. - ChatGPT (app or web): Plugins, search WigNet, add, Authorize (no account); in a conversation, + then Plugins then WigNet. Fallback on chatgpt.com: Plugins, Add, Create an MCP app, URL `https://mcp.wignet.app/`. The owner pastes the frame link once; attached photos go through `image_file`. - Claude (claude.ai, desktop, mobile): Settings, Connectors, Add custom connector, with the account or the frame connector. An attached photo cannot reach the server from Claude: `request_photo` gives a one-use link (and, where MCP Apps show, a drop zone in the chat) where the owner picks it. - Claude Code: `claude mcp add --transport http wignet https://app.wignet.app/mcp/account`, then `/mcp` to sign in. Codex and Cursor take the same URL in their MCP settings. - Grok (app or web): Settings, Connectors, at the bottom Custom connectors, New connector, with the account connector, then sign in. In the conversation the owner pastes the frame link or its MCP address. - Mistral Vibe (app or web): Work, Context, Connectors, Add a custom connector, a name without spaces, the account connector, then sign in. - Kimi (iPhone app, tested 2026-10-16): no connector. The owner pastes the frame link in a chat and says what to show; Kimi reads the frame's page and calls the REST API. - Z.ai (GLM 5.2, tested 2026-10-16): no connector. The owner pastes the frame's MCP address `https://mcp.wignet.app/` in a chat and says what to show; the model reads it and calls the REST API. - Autonomous agents (OpenClaw, Hermes, Grok Bot, Instinct…): the frame link and this file are enough. Wignet runs no timer: recurring updates are the agent's job. Documented by their vendors but not yet tested here: - Meta Muse: Muse Code reads MCP servers from the `mcp_servers` block of its settings; the Muse app may offer custom connectors (account connector). - Dust (teams): Spaces, Tools, Add Tool, Add MCP Server, URL, authentication Automatic. For a shared screen use the frame connector, so every agent of the workspace acts on that screen only. - Gemini (app: US only for now, personal accounts 18+, English): Settings, Connected apps, add a custom app with the HTTPS URL. Gemini Business: an admin adds it. - Manus: Connectors, Create, Add MCP by URL. - Kimi Code: `kimi mcp add --transport http --auth oauth wignet https://app.wignet.app/mcp/account`, then `kimi mcp auth wignet`. - Qwen Code: `~/.qwen/settings.json`, `mcpServers`, entry `wignet` with `httpUrl` set to the frame connector. These menu paths are examples observed in 2026-10 and change often; look for Plugins, Connectors, Apps or MCP servers. Leave key or token fields empty; a made-up Bearer token is refused. ## Publish - Replace, add, or for a while: replacing the slides is the default. Ask the owner when they could mean replace or add (the frame already has slides of its own and the request says neither "instead" nor "also"); add_slide only when they say to add; a push for a while only for a clearly time-bound request (a recipe while cooking, a message until tonight), and add_event for a set time (an event, an alarm). - Text: push_event with text, up to 1000 characters, in Markdown or plain: it replaces the slides. With duration_seconds (60–86400) it shows that long from the frame download, then the slides resume. An undownloaded push is dropped after 24 hours; on a frame with only Welcome content it becomes standing instead. end_push ends a temporary visual early; it does not cancel a sound. - Custom: set_custom_image with image_url; one download per explicit call. - PushImages: push_image with exactly one image_url, image_base64 or image_file. File references contain download_url. Send image_sha256 with base64. push_image and set_custom_image replace the standing slides. - Slides: set_slides replaces the ordered list (up to 50); publication_id from get_state slides.items keeps/reorders an existing slide. add_slide keeps the others (when the owner asks to add); remove_slide cannot remove the last. set_slide_interval changes the duration: read get_capabilities slides for bounds (60–86400 seconds, 600 by default) and battery cost. List and interval changes restart at slide 1. - Scenes: a screen whose get_capabilities has a scene block plays pages, pictures and sprites itself, reacting to its buttons, motion, touch, timers or an event you send. Its own MCP lists the scene tools; the account-wide catalogue does not. The power button and a 5 s hold stay the frame's own. - Rendering: mode auto chooses nearest inks for flat graphics and dithers photos. dry_run on push_image or push_event without sound returns a preview without publishing. Colour texts support background/text_color; set_message_background sets the default text background. - Optional request_id deduplicates identical publications for 24 h; orphan cleanup is not content expiry. Sources remain while referenced. - Planned displays and alarms: get_events reads them; add_event plans one and keeps the others; update_event changes one by id; delete_event removes one by id; set_events replaces the full list. On ChatGPT an event image goes as add_event or update_event image_file, not base64. Welcome Page and event_message are retained internal renders. Content is prepared on save and selected at frame polls within its window; the slides then resume. Standing publications suppress open visual windows; temporary pushes pause them. Future occurrences and sounds survive. - Supported audio: push_event/cancel_event, get_local_time/set_local_time and event tools. expires_seconds applies to an undelivered sound, not its visual. Sound-list firmware keeps its normal cadence even with alarms. set_sound_volume sets the frame volume (0–100, 50 by default). get_tunes lists built-in and saved tunes; save_tune and delete_tune manage saved ones by name; preview_tune returns a link where the owner hears a tune before it is set. - Hardware: set_orientation, set_battery_sync_interval, reset_battery_sync_interval, set_powered_sync_interval, set_power_source where supported. Width and height are fleet-admin-only; the colour profile comes from the firmware. - Diagnosis: get_device_log reads the last 30 days of calls to this frame and how each ended; get_power_history reads power and battery history where the frame measures it. Success confirms server availability, not physical display. Inspect the preview, state and last_seen_at. Delivery waits for the next wake: use get_state power syncs_every_seconds (60 seconds on mains by default, configurable 10–3600). Battery cadence can be hours; slides and event boundaries also influence wakes. An offline frame has no guaranteed delivery deadline. No command interrupts a sleep in progress. ## Guides and catalogue - [Generic OpenAPI](https://app.wignet.app/api/owner/openapi.json): API description with a `mac` path parameter. - [Agent skill](https://wignet.app/skills/SKILL.md): Readable instructions for operating a frame. - [Agent skill archive](https://wignet.app/skills/wignet-skill.zip): Installable skill for Claude and Codex. - [GPT kit](https://wignet.app/skills/chatgpt-gpt.md): Instructions for a custom GPT. - [Visual design skill](https://wignet.app/skills/wignet-visuals-skill.zip): Frame image design guidance. - [Alarm skill](https://wignet.app/skills/wignet-alarm-skill.zip): Wake-up alarms: time and days, fade-in, how long it rings, what the screen shows. - [Notification skill](https://wignet.app/skills/wignet-notify-skill.zip): A short sound or message, now or at a set time, and when it arrives. - [Tunes skill](https://wignet.app/skills/wignet-tunes-skill.zip): Compose the melody an alarm plays (MML), check it and let the owner hear it. - [Build a Wignet](https://wignet.app/build.html): Compatible boards and setup instructions. - [Live products](https://wignet.app/api/shop/products): Catalogue information. The showroom no longer offers checkout or product pages. - [Shop MCP](https://wignet.app/api/shop/mcp): `list_products` and `get_product`. Read live prices and stock before quoting. Prices include VAT and shipping. There is no checkout on the showroom. For purchase enquiries, contact contact@wignet.app; agents cannot order.