- Brand
- Fugo
- Category
- Content & Design
- Primary Subcategory
- Pending
Integration details
Description
FUGO - Share To Screens helps users manage screens, media, folders, content, dashboards, playlists, triggers, and Spaces from ChatGPT. The app can discover workspace data, upload media, create and publish playlists, share URLs or HTML directly to screens, stop active screen shares, and perform scoped Space administration in the authenticated user's FUGO tenant.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Pending
- Secondary Subcategories
- None listed
- Brand
- Fugo
- Access
- Account required
- First tracked
- 2026-11-12
- Tool count
- 32
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Not discoverable in ChatGPT yet
ChatGPT now suggests Plugins on its own when they match a user's request, but not every Plugin is being surfaced yet.We haven’t seen FUGO - Share To Screens suggested yet. Sign up and we’ll track it, and your Discoverability Score will appear here once ChatGPT starts surfacing it.
What discovery looks like

Get alerts for FUGO - Share To Screens
Get updates when FUGO - Share To Screens’s Discoverability Score or category rank changes.
Competitive lineup
32 tools agents can invoke
Put a screen of the chosen Space on a Layout, or, with `layoutId` `fullscreen`, back on the full-screen Layout. This changes what a live screen shows. On a Layout of its own a screen plays only what is bound to that Layout's zones, through `layoutBindingsJson`, a `screenZonesJson` entry for the screen, or a zone's tags: playlists bound there start playing on it, and a playlist with none of those for this Layout (one that names the screen without an entry for it, one bound only to the old Layout, one matching the screen's own properties rather than a zone's) stops playing there until the screen is put back. Fallback playlists are unaffected: they fill whatever the screen would otherwise leave empty. Agree that with the user first. The screen picks the change up on its next content pull. Returns `changed` (false when the screen was already on the Layout), `previousLayoutId` to put it back (null when nothing changed), and `fit`: MATCH when the Layout's shape suits the shape the screen last reported (`screenAspectRatio`, reported at pairing and on boot), MISMATCH when it doesn't, UNKNOWN when that report doesn't give one, which is not a fit. MISMATCH and UNKNOWN come with a `warning` to pass on, as does a Layout with no zones; the screen is put on the Layout either way. `fit` and `warning` are null for the full-screen Layout, which suits any shape. Layout ids come from `list_layouts`, screen ids from `list_screens`.
assign_screen_layout
Create a Layout for the workspace, shared by every Space. A Layout splits a screen into zones, and a playlist placed in a zone plays there. No screen changes until `assign_screen_layout` puts one on it. Returns the Layout with its zones' ids, to pass to `create_playlist`, `create_manual_trigger` and `share_to_screen` (`layoutBindingsJson`). Refused, with the reason, when a zone leaves the screen, the RELATIVE zones don't form one row or column edge to edge, or two zones claim the same property tag. A Layout can't be edited or deleted through these tools, only in the CMS, and every Space sees it: look in `list_layouts` for one that already fits, and agree its shape (`aspectRatio`, 16:9 when omitted) and zones with the user, before creating one.
create_layout
Create and immediately publish a manual trigger in the chosen Space. Manual triggers play on demand (loop) or wait for a user-initiated start (standby). playMode controls the initial state: 'loop' starts looping on the targeted screens immediately; 'standby' waits silently until a user hits 'play' in the CMS. Screen targeting, zones, dates and recurrences work as in create_playlist: targeting is by playerIds, screenPropertyConditionsJson and/or layoutBindingsJson. On a screen with a custom Layout (`get_screen` shows its `layout` and `zones`) a trigger plays only in zones, like a playlist: bind it to zones of the Layout for every screen using it (`layoutBindingsJson`) or name zones for a screen in `playerIds` (`screenZonesJson`). It then fires in those zones and leaves the Layout's other zones playing. On a screen in `playerIds` that has no custom Layout it takes over the whole screen. Over MCP, schedule only the all-day rule recurrencesJson shows: when the user asks for any other schedule (weekdays, set hours), don't send the all-day rule in its place; tell the user to set that schedule in the FUGO web app.
create_manual_trigger
Create and immediately publish a regular (non-trigger, non-fallback) playlist in the chosen Space. The created playlist becomes visible to screens straight away. Playable assets are of three kinds — uploaded media, designed Content slides, and live Dashboards — and the playlist can mix all three. Discover IDs via `list_media`, `list_content`, and `list_dashboards` before composing `contentRefs`. Targeting works by specific screens and/or by property — `playerIds` lists screen IDs (from `list_screens`), `screenPropertyConditionsJson` lists property rules (from `list_screen_properties`, e.g. all screens where country=UK). Either or both. At least one of the two, or `layoutBindingsJson`, must be non-empty — a playlist with no targets is rejected. Property-based targeting is usually preferable for fleets above ~10 screens because it auto-applies to new screens with matching properties. On a screen with a custom Layout (`get_screen` shows its `layout` and `zones`), a playlist plays only in zones: bind it to zones of the Layout for every screen using it (`layoutBindingsJson`, which also counts as targeting on its own), name zones for a screen in `playerIds` (`screenZonesJson`), or let property conditions match the zones' properties. Zones are never picked for you: a custom-Layout screen named in `playerIds` without an entry gets nothing from the playlist. Names are not enforced unique; list_playlists is the available check to avoid duplicates. For triggers (manually-driven playback), create_manual_trigger is the variant. Over MCP, schedule only the all-day rule recurrencesJson shows: when the user asks for any other schedule (weekdays, set hours), don't send the all-day rule in its place; tell the user to set that schedule in the FUGO web app.
create_playlist
Create a new Space in the current Tenant. Returns the new Space (`spaceId`, `name`, `tags`) — the `spaceId` can be passed as `space_id` to Space-scoped tools immediately afterwards. Names are not enforced unique; call list_spaces first to avoid creating a duplicate. Requires the TenantAdmin role; anyone else is refused.
create_space
PERMANENTLY delete a playlist (by playlistId) in the chosen Space — it is unpublished from screens first, then the draft is removed. This CANNOT be undone; to merely take it off screens while keeping it re-publishable, use unpublish_playlist instead. IDs come from list_playlists.
delete_playlist
DESTRUCTIVE. Deletes the currently-bound Space (controlled by space_id) and unassigns all members; their content moves to the tenant root. Cannot be undone. Call list_space_users first to confirm member impact before invoking. Requires the TenantAdmin role; anyone else is refused.
delete_space
Fetch one content item (slide / presentation) by its ID within the chosen Space. Returns the full record INCLUDING the rendered body. Content IDs are typically obtained from `list_content`.
get_content
Get one dashboard of the chosen Space (controlled by space_id): its name, whether it's active, its size in pixels, how often its screenshot is refreshed, the steps it runs, its settings, and when it was created and last updated. It returns no screenshots. Find the dashboard with list_dashboards.
get_dashboard
Fetch one media item by its ID within the chosen Space. Media IDs are typically obtained from `list_media`. Excludes soft-deleted items — those are surfaced via the in-app CMS only. An item whose bytes have not yet reached storage is not returned; one that is still being processed is, with status `processing`.
get_media
Fetch one playlist (draft form) by its ID within the chosen Space. Returns the editable draft regardless of whether the entity is a trigger. Trigger status is not surfaced as a flat boolean on this response; inspect `manualEvent`, `timerEvents`, and `triggerSettings` — when any of those is set / non-empty, the entity acts as a trigger. `list_playlists` exposes the equivalent `isTrigger: Boolean` shortcut on its item view. The currently-published version is surfaced by `list_playlists` via `publishedState`. IDs are typically obtained from `list_playlists`.
get_playlist
Fetch one screen / player by its ID within the chosen Space. Returns the screen's name, labels, assigned property values, live online state, its Layout and that Layout's zones (on a custom Layout, property-targeted playlists match the zones' properties, not the screen's own), and the monitoring health block (last seen, CPU, memory, disk, temperature, network). `orientation` is the rotation set on the screen: "0°", "90°", "180°" or "270°"; 90° and 270° turn a landscape panel to portrait. It is null when none is set (the player then shows the screen unrotated) or the setting is not one of these. Screen IDs are typically obtained from `list_screens`.
get_screen
List the Fugo Apps share_to_screen can publish as {"kind":"app"} items. Pass every link you are about to publish in `links`: linkMatches says which App each belongs to, with the canonical settings to send (two links to the same video give the same settings, so compare them to drop duplicates), or an error when the link is on an App's host but is not something it can play. Suggested Apps carry their settingsSchema; pass an App's name in `apps` to get its schema without a link. Prefer an App that fits over composing a slide, and never publish a link listed in linkMatches as a url, web or html item.
list_apps
List content items (slides / presentations) in the chosen Space (controlled by space_id). Returns metadata WITHOUT the rendered body — bodies can be large. Call get_content with a specific ID when the body is needed.
list_content
List the dashboards in the chosen Space (controlled by space_id): each one's name, whether it's active, its size in pixels, how often its screenshot is refreshed, and when it was created and last updated. It returns no screenshots. get_dashboard returns one dashboard's full record, its steps and settings included.
list_dashboards
List every Folder in the chosen Space (controlled by space_id). Folders organise media in a tree; each has an id, name, and optional parentId. Folder IDs from this tool feed `parentFolderId` on upload_media_with_metadata.
list_folders
List the workspace's Layouts; every Space shares them. A Layout splits a screen into zones: each zone's x, y, w and h are fractions of the screen from its top-left corner, and `aspectRatio` is the screen shape the Layout is drawn for. RELATIVE zones share one row or column (`flow`) and grow into a neighbour that has nothing to play, so their extent along it is a share rather than fixed; ABSOLUTE zones stay where they are drawn. Pass a Layout's `id` and its zones' `id`s to `create_playlist`, `create_manual_trigger` and `share_to_screen` (`layoutBindingsJson`, `screenZonesJson`), and a Layout's `id` to `assign_screen_layout`. The full-screen Layout of a screen without one of its own isn't listed.
list_layouts
List every media item in the chosen Space (controlled by space_id). Returns all items at once — use list_media_paginated for Spaces with many items. Result excludes deleted media.
list_media
Paginated alternative to `list_media` for large Spaces or first-N reads. Returns one page of media items per call. An empty `cursor` denotes the first page; the response carries the cursor for the next page. Keep calling for as long as a cursor comes back, and stop only when none does: a page may hold fewer items than requested, or none at all, while further pages still follow, so an empty page is not the end of the list. Pagination runs over a live snapshot — concurrent uploads may shift items between pages.
list_media_paginated
List regular playlists in the chosen Space (controlled by space_id). Excludes triggers — those are returned by `list_triggers` instead. A Playlist is a Trigger when it has `triggerSettings` set, matching the CMS Triggers view (see docs/GLOSSARY.md). Each item carries its publication state (NotPublished / PublishedOldVersion / PublishedCurrentVersion).
list_playlists
List every screen property defined for the tenant. Screen properties are typed labels (e.g. 'country', 'store-format') attached to screens; they're the building blocks for property-based playlist targeting. Each entry includes id, name, and the value type. Property IDs feed into property-based scheduling on playlists / triggers. Properties are defined at the tenant level — the same catalog is returned regardless of which Space the caller is currently in.
list_screen_properties
List every screen / player device registered in the chosen Space (controlled by space_id). Screens are the physical displays running Fugo content. Each entry includes the screen's deployment state and the Layout it renders: its own custom Layout, or the implicit full-screen one (`layout.isImplicit`); `layout` is null when it couldn't be read. A screen's own `properties` drive property targeting only on the implicit Layout; on a custom one the Layout's zones do (see `get_screen`). `orientation` is the rotation set on the screen: "0°", "90°", "180°" or "270°"; 90° and 270° turn a landscape panel to portrait. It is null when none is set (the player then shows the screen unrotated) or the setting is not one of these. Screen IDs returned here can be passed to `get_screen` for full state.
list_screens
List the human users who are members of the chosen Space (controlled by space_id). Returns each user's name, email, and role within the Space.
list_space_users
Lists every Space (team) in the caller's Tenant. Note: this is NOT filtered by per-Space membership; the same set the existing `GET /tenant/spaces` REST endpoint returns. Per-call access is enforced separately by the server when a Space-scoped tool is invoked. The first entry is the Admin Space (spaceId == tenantId, the tenant-wide scope). Subsequent entries are individual Spaces.
list_spaces
List triggers in the chosen Space (controlled by space_id). Triggers are Playlists with `triggerSettings` set, matching the CMS Triggers view. Regular (non-trigger) playlists are returned by `list_playlists` instead. Each item carries its publication state.
list_triggers
Publish an ordered mixed-content playlist to FUGO screens in one step. itemsJson is a JSON array where each element is one slide (in order). Supported kinds: {"kind":"url","url":"https://…"} — server probes and auto-picks web-app or media. A SharePoint/OneDrive/Teams link works here even though it requires sign-in — including one for a file attached or shared in this conversation — the server fetches it through the team's connected Microsoft accounts. Pass the link itself, not a description of the file. {"kind":"web","url":"https://…"} — explicit live web page (iframed; must be publicly reachable) {"kind":"html","html":"<div>…</div>","media":{"mediaId":"id"},"transformPrompt":"optional"} — HTML5 app; media is optional (mediaId XOR url) {"kind":"media","mediaId":"id"} — existing uploaded media by id {"kind":"media","url":"https://…"} — upload from URL (strict: must be a media file, not a web page; a SharePoint/OneDrive/Teams link is accepted on the same terms as above) {"kind":"content","contentId":"id"} — existing content by id {"kind":"app","app":"youtube","settings":{…}} — a registered Fugo App (a YouTube video, …). Call list_apps for the Apps, their settings, and what each link you have is; send the settings list_apps gave for a link. For an App chosen by its summary rather than by a link, call list_apps again with the App's name in apps to get its settingsSchema, and fill settings from it with values the request or a source gives. Send a link list_apps reported with an error as an app item too, so the result names it. Each item may set an optional "durationSeconds" (minimum 10); items without it default to 30, except an app item, whose App decides (a YouTube video plays to its end). Items that fail to build are skipped and named in the result's skippedText (also part of warning), by link, title or position in itemsJson; the call fails only if every item fails. Slides added with a problem, and a play_once that did not start, are named the same way in problemsText, which lists at most ten items; warning words every problem in full. playbackJson: {"mode":"play_once"} | {"mode":"loop_until_stopped"} | {"mode":"add_to_playlists"}, with optional dates (see playbackJson). On a screen with a custom Layout (`get_screen` shows its `layout` and `zones`), a share plays only in zones, in every mode: bind it to zones of the Layout (`layoutBindingsJson`, which also counts as targeting on its own), name zones for a screen in screenIds (`screenZonesJson`), or let property conditions match the zones' properties. Zones are never picked for you: a custom-Layout screen in screenIds without an entry gets nothing from the share. play_once and loop_until_stopped fire in those zones and leave the Layout's other zones playing; on a screen in screenIds that has no custom Layout they take over the whole screen.
share_to_screen
Stop a trigger created by share_to_screen (by its playlistId) so the targeted screens revert to their base playlist. Only triggers (play_once / loop_until_stopped) can be stopped; a scheduled add_to_playlists playlist is removed from the FUGO web app instead.
stop_screen
Take a published playlist off all the screens it targets, in the chosen Space. The editable draft is kept, so it can be re-published later from the FUGO web app — nothing is destroyed. Use this to stop a scheduled (add_to_playlists) share. To stop a looping/one-off trigger use stop_screen instead; to remove a playlist permanently use delete_playlist. IDs come from list_playlists.
unpublish_playlist
REPLACE the bytes of an EXISTING media item (by mediaId) with a download from a public URL — this edits an asset in place; it does NOT create new media. To ADD media, use the upload_media_* tools instead (upload_media_from_url / upload_media_with_metadata — see their guidance for which to pick). Server fills in content type, file size, and filename from the URL response. Synchronous — returns the updated Media once the download + store completes.
update_media_from_url
Update the currently-bound Space (controlled by space_id). Both arguments are required — pass the existing values for fields you don't intend to change. Call list_spaces first if you need the existing name or tags. Returns the updated Space metadata. Requires the TenantAdmin role; anyone else is refused.
update_space
Create a media entry by downloading from a public URL; the server derives filename, content type, and size via an HTTP HEAD request, then downloads. Idempotent on the URL (same URL returns the existing Media); lands in the Space root. Fails if the host blocks HEAD (some Cloudflare/CDN hosts, e.g. picsum.photos) — then use upload_media_with_metadata, which needs no HEAD. Pick the upload tool by what you have: a URL whose size you know -> upload_media_with_metadata (no HEAD, custom name/folder); a URL only -> this tool.
upload_media_from_url
Create a media entry by downloading from a public URL using caller-supplied name, content type, and size — the server makes NO HEAD request. Prefer this over upload_media_from_url whenever you already know the size (e.g. from a SharePoint / OneDrive / Graph listing): it also works on hosts that block HEAD (Cloudflare/CDNs) and lets you set a custom filename and target folder. A Google Drive file is uploaded through this tool: pass https://www.googleapis.com/drive/v3/files/<fileId>?alt=media with the name, mimeType and size from a Drive listing, and the server fetches the bytes using the team's connected Google account. A Drive sharing link (drive.google.com/...) is not a download URL and will not work. Names are not enforced unique; list_media is the available check to avoid duplicates. Pick the upload tool by what you have: a URL whose size you know -> this tool; a URL only (size unknown) -> upload_media_from_url.
upload_media_with_metadata
FUGO - Share To Screens ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve FUGO - Share To Screens's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.


