agentView
Send content to any screen
- Category
- Productivity
- Primary Subcategory
- Video Infrastructure & Live Visuals
Integration details
Description
agentView lets ChatGPT update any browser-capable screen (a TV, tablet, kiosk, or signage panel) by talking. Ask ChatGPT to put a daily lunch menu on your bistro display, a sales dashboard on the office wall, or a waiting-room board on your practice screen, and the layout appears live within seconds. You manage screens, templates, and team members on agentview.de; ChatGPT drives them through the agentView connector.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Video Infrastructure & Live Visuals
- Secondary Subcategories
- None listed
- Brand
- agentView
- Access
- Account optional
- First tracked
- 2026-05-23
- Tool count
- 48
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Get alerts for agentView
Get updates when agentView’s Discoverability Score or category rank changes.
ChatGPT Plugin Discovery Score
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Competing in ChatGPT Video Infrastructure & Live Visuals
View Category48 tools agents can invoke
Validates a JWT agent token and caches the resulting identity on the current MCP session so that subsequent protected tool calls succeed without resending the token. Use this only if your client cannot reliably send an Authorization: Bearer header on every request; modern streamable HTTP clients should send the header instead. Do not call this if the session was already auto-authenticated by get_auth_session. Returns authenticated (boolean), sessionBound (whether the identity was cached on this session), userId, name, email, scope and expiresAt (ISO 8601).
authenticate
Sends HTML content to multiple displays at once. Provide display_ids to target specific displays or set all to true to target all accessible displays. Locked displays are skipped. Returns sent and skipped lists with reasons. Requires content_only scope.
broadcast_content
Converts an unclaimed guest or pending display into a managed personal display owned by the authenticated user. This permanently transfers ownership and counts against the user's display quota. Use this only when the user explicitly wants to adopt an existing hardware or demo display that is already running. For first-time physical setup, prefer pair_by_code instead. Requires admin scope. Returns profileId (the new managed display ID) and name.
claim_display
Removes the current live content from a display and returns it to its idle/default state. Viewers will immediately see the change. Use this when the user wants to blank or reset a display. This does not delete the display itself — use delete_display for that. Requires authentication with at least content_only scope. Returns id and status ('cleared').
clear_display
Updates hardware permission, UI settings, and connectivity overrides for a display. Use this when the user wants to enable or disable camera, microphone or geolocation access, toggle the mouse cursor or badge overlay visibility, change the watermark position, or set network connectivity constraints. All parameters except display_id are optional — only provided settings are changed. If the display is online, changes are pushed immediately. Requires admin scope.
configure_display
Creates a long-lived API key for server-to-server integration without OAuth. The raw key is returned only once — store it securely. The user must explicitly consent to creating the key. Requires admin scope. Supports granular scoping: restrict the key to specific data-slot slugs, specific display IDs, a read/write permission flag, and/or fine-grained capability flags. Returns the raw key (avk_...), keyId, name, scope, permissions, allowedSlotSlugs, allowedDisplayIds, capabilities, and expiration.
create_api_key
Starts a browser login and returns a loginUrl plus sessionRequestId. Use as STEP 0 in a fresh conversation before any protected tool. Show the loginUrl to the user as a clickable link in their language, then poll get_auth_session until 'active' and pass session_request_id on every later call. Returns sessionRequestId, loginUrl, pollUrl and expiresIn.
create_auth_session
Creates a personal display WITHOUT pairing it to physical hardware. The display starts offline and uncoupled — this is NOT the normal setup flow. IMPORTANT: Do NOT use this tool for ambiguous requests like 'create a display', 'add a screen', 'set up a display', 'neues Display erstellen', or 'Bildschirm hinzufügen'. Those requests mean physical display onboarding by default. In such cases, instruct the user to open https://display.agentview.de in any web browser on the target screen (there is NO native app — agentView is purely browser-based), ask for the 6-character pairing code, and then call pair_by_code instead. Use create_display ONLY when the user explicitly says they want to pre-provision a display without hardware, create a virtual/headless display, or manage an already-existing profile separately from device setup. Do not call this just to check capacity — use get_account to inspect remainingDisplays first. Requires admin scope; list_displays and send_html only need content_only. Returns a pre-provisioned offline profile (id, name, displayUrl, setupUrl, managedUrl, pairingUrl, pairingExpiresAt, approvalUrl, status) — not the recommended first-time device onboarding flow.
create_display
Creates a new organization and makes the authenticated user the owner. Use this when the user wants to set up a shared display fleet. Returns orgId, name, slug, type and yourRole. Requires admin scope.
create_organization
Deletes one or more assets. Displays referencing deleted assets will show broken images. Requires authentication with at least content_only scope.
delete_asset
Permanently deletes a data slot. Display HTML fetching its readUrl will receive 404 after deletion. Cannot be undone. Supply group_id to delete a group slot; omit for personal slots. Requires authentication.
delete_data_slot
Permanently deletes a display and all its associated content. This action cannot be undone. Use this only when the user explicitly confirms they want to remove the display. Requires admin scope. Returns id, name and deleted (boolean true).
delete_display
Permanently deletes an organization, releasing all its displays and removing all members. Only the owner can delete. This cannot be undone. Requires admin scope.
delete_organization
Fetches one agentView resource by agentview:// URI, e.g. agentview://public/status, agentview://account/me or agentview://display/ABCD1234. Use after search or with a known URI. Public URIs need no auth; account and display URIs need a session. Returns uri, type, title, text and structured data.
fetch
Returns the authenticated user's account profile including userId, name, email, plan with feature details, personal display limits, total accessible displays across all organizations, organization memberships summary and points balance. Use this to answer questions about the user's subscription, display quota, organization memberships or plan capabilities. Requires authentication with at least content_only scope. Do not use this to list displays — use list_displays instead.
get_account
Returns metadata for a single asset including its URL. Use this to verify an asset still exists before referencing it in HTML. Requires authentication with at least content_only scope.
get_asset
Polls a login session created by create_auth_session until the user completes the browser login. Poll every 2-3 seconds while status is 'pending'. Status 'active' reports the GRANTED scope, read back from the issued token. Completing the login does NOT authenticate this MCP session: pass session_request_id on every protected call afterwards. Omit it and the server falls back to your connector's bearer token, which usually carries content scope only, so content tools keep working while admin tools like pair_by_code refuse with admin_scope_required. The raw token is intentionally not returned over MCP. 'expired' means start over with create_auth_session.
get_auth_session
Returns the current JSON content and metadata of a data slot by slug. Supply group_id to look up a group slot; omit it for personal slots. The response includes readUrl — the public anonymous URL for display HTML to fetch. Requires authentication.
get_data_slot
Returns the full details of a single display including its live state, current content, pairing links, screen and viewport facts, touch capability, runtime classification, hardware/UI settings, and the latest reported browser/runtime facts. Use this when you already know the display ID and need its complete state. Do not use this to discover displays — use list_displays first. Requires authentication with at least content_only scope.
get_display
Returns the authenticated user's complete license allocation overview: total premium licenses, personal usage, allocatable licenses, per-organization allocations, and free licenses. Use this to understand available capacity before allocating licenses. Requires content_only scope.
get_license_info
Returns full details of a specific organization including its displays, members with roles, allocated slots and remaining capacity. Use this after list_organizations to inspect a specific organization's state. Requires authentication with at least content_only scope and the user must be a member of the organization.
get_organization
Returns the server's public readiness status, version string and discovery URLs. Use this before authenticating to verify the server is reachable and to obtain entry-point URLs. No authentication required. Returns status ('ready'), server name, version, statusUrl and instructionsUrl.
get_public_status
Returns the raw display HTML of a published store template plus its slot definitions and allowed external origins, for editing or embedding the template yourself. {{asset:NAME}} placeholders resolve to public URLs; {{slot:KEY.prop}} stay intact for your own binding. Large HTML is windowed via max_bytes (default 51200) and offset; the result reports totalBytes and truncated. To push a template to a display directly, use send_store_template_to_display instead. No authentication required.
get_store_template_content
Returns full details of one store template: localized title and description, long-form markdown, category, suite, tags, features, preview image and agentArtifacts (bot-onboarding files such as system prompts, Agent Skills SKILL.md, MCP config). Use after search_store_templates before recommending or installing; when agentArtifacts is non-empty, fetch bodies via get_agent_artifact. No authentication required.
get_store_template_details
Returns the displays the authenticated user can send a given store template to, plus the data slots the template needs. Call this before send_store_template_to_display so you can (1) show the user which Türschild they can target and (2) gather any per-slot JSON the template consumes (greeting, menu JSON, sensor URL, ...). Requires authentication with at least content_only scope. Returns templateSlug, language, displays (array of {displayId, name, scope='personal'|'group', groupId?, isLocked}) and requiredDataSlots (array of {key, label, type, placeholderName, required}). When no displays come back, tell the user they first need to create/claim a display (create_display / pair_by_code) before installing store content. API-key callers with a display whitelist only see their scoped displays.
get_store_template_install_options
Lists all API keys for the current user. Returns key metadata (prefix, name, scope, dates) but never the raw key. Requires admin scope.
list_api_keys
Lists uploaded assets with optional filtering. When working with an organization display, pass its orgId as group_id to search the group's shared asset pool. Without group_id, only personal assets are returned. Check this before uploading to avoid duplicates. Requires authentication with at least content_only scope.
list_assets
Lists data slots with optional filtering. Returns metadata only (no jsonContent). Each item includes readUrl: /data/u/{publicSlug}/{slug}.json or /data/g/{groupSlug}/{slug}.json. Use readUrl in display HTML fetch() calls. Requires authentication.
list_data_slots
Lists the authenticated user's personal display categories and assignment counts. Requires authentication with at least content_only scope.
list_display_categories
Returns all displays accessible to the authenticated user as an array with count and display details. Use this to discover available display IDs before reading or modifying a specific display with get_display or send_html. Requires authentication with at least content_only scope; admin is not required. Each display entry includes id (8-character alphanumeric profile ID), name, status, locked, displayUrl, setupUrl, pairingUrl and other management links plus a compact runtime summary such as screen resolution, touch support, deviceClass and deviceFamily when known. Do not use this to get full details of one display — use get_display with the display_id instead.
list_displays
Returns all organizations the authenticated user belongs to with their role, display count, member count and allocated slots. Use this to answer questions about the user's organizations, how many displays an organization has, or team membership. Requires authentication with at least content_only scope.
list_organizations
Lists all published agentView store categories (e.g. Gastronomie, Wartezimmer, Empfang, Smart Home) with localized titles, descriptions and template counts. Use this to narrow a subsequent search_store_templates call when the user asks for 'templates for a waiting room' or similar. No authentication required. Returns count, language and a categories array where each entry has slug, title, description, templateCount, heroIconKey and detailPath.
list_store_categories
Acknowledgement only: agentView keeps no identity cache on the MCP session, so there is nothing to clear. It does NOT end an agentView login, revoke a token, or invalidate a session_request_id, and it will not reset a failing auth state. To stop acting as the user, stop sending the credential.
logout
PREFERRED way to set up a physical display — and the DEFAULT for any ambiguous user request about creating, adding, or setting up a display. Unless the user explicitly asks for pre-provisioning without hardware or a virtual/headless display, ALWAYS use this tool instead of create_display. agentView is purely browser-based — there is NO native app to install. Workflow: (1) Ask the user to open https://display.agentview.de in any web browser on the target TV/screen/tablet, (2) ask them to read the 6-character code shown on screen, (3) call this tool with the code. This creates and pairs the display in one step — no orphaned or offline displays. Two modes: (A) New display — provide code + profile_name to create and pair in one step. This is the recommended default for first-time setup. (B) Rebind — provide code + target_display_id to move an existing display profile to new hardware. Call list_displays first to get the target_display_id. Always prefer this over create_display or create_org_display for physical devices. Requires admin scope.
pair_by_code
Reads the raw HTML source code that is currently shown on a display. Use this when you want to inspect, modify or reuse the existing content. Typical workflow: call read_display_html to get the current HTML, make changes, then send the modified HTML back via send_html. Returns the HTML as a string plus metadata (character count, content type, when it was sent). If no live content is active, returns the idle/default HTML if one is set. Requires authentication with at least content_only scope.
read_display_html
Removes a display from an organization, clearing its group assignment and all display grants. The display becomes unassigned. Requires admin scope and admin or owner role.
remove_display_from_org
Permanently revokes an API key. This is irreversible — the key will immediately stop working. Requires admin scope.
revoke_api_key
Searches a curated catalog of 600+ free public APIs (no key, HTTPS) for embedding live data in display HTML via fetch(): weather, news, finance, sports, images, food and 40+ more categories. Use when generating HTML that needs live internet data. Set list_categories=true to get the category menu with counts instead of search results. Returns docs links, CORS status and fetch() hints. No authentication required.
search_public_apis
Searches agentView resources by keyword: documentation, server status, your account, your displays and the API catalog. Returns ranked resource URIs with snippets to read via fetch. Unauthenticated searches cover public docs only. Skip when you already know the URI — call fetch directly.
search
Searches the agentView template store for ready-made display designs ('Zahnarzt-Wartezimmer', 'Bistro', 'reception', ...). Use when the user wants a polished pre-built design instead of generated HTML; results render as a gallery widget. Filter by category, suite and language; paginate with limit/offset. Follow up with get_store_template_details. No authentication required.
search_store_templates
Send HTML content to a display. Prefer this over send_url unless the user explicitly wants an external website rendered as-is. For rich content with images, fonts, or media, first upload assets using upload_asset and reference the returned URLs in your HTML. Include content_description whenever possible so get_display_content can describe intent without immediately reading raw HTML. Assets are cached on the display — only the HTML is re-downloaded on updates. Use <img src="asset_url">, <video src="asset_url">, or @font-face { src: url("asset_url") } to embed assets. Before generating complex HTML, call get_display_capabilities for the target display so you know the real browser/runtime limits. Produce high-quality, visually polished output suitable for digital signage: clean typography, balanced spacing, large readable fonts, consistent colors, full-screen layout (100vw/100vh, no scrollbars), and smooth animations where appropriate. Always include <meta charset='UTF-8'> and <meta name='viewport' content='width=device-width, initial-scale=1'>. Requires authentication with at least content_only scope. Exactly one of html or base64_html must be provided. Returns id, name, duration, file and version.
send_html
Installs a published store template onto one of the authenticated user's displays. The server materializes the template HTML, auto-creates any required data slots (reusing existing slots from a prior install when possible) and publishes the result so the Türschild updates within seconds. Requires authentication with at least content_only scope, control access to the target display, and (for API-key callers) the display.send capability. Returns templateSlug, versionId, displayId, fileName, contentVersionId and installedSlots (each with key, placeholderName, slug, readUrl, groupId, type). Errors: 'template_not_found', 'display_not_found', 'access_denied', 'slot_install_failed', 'storage_quota_exceeded', 'invalid_slot_override', 'publish_failed'. Always call get_store_template_install_options first so you know which slots this template needs and which displays the user can target. The data_slot_overrides argument lets you customize per-slot JSON without a follow-up set_data_slot call — perfect for 'show my daily menu' flows where the LLM generates the JSON on the fly.
send_store_template_to_display
Loads a web page by URL on a display using a full-page iframe, immediately replacing whatever is currently shown. Use this when the user wants to show an external website, dashboard or web app on a display. Include content_description whenever available so get_display_content can communicate intent without immediately calling read_display_html. The URL must be an absolute HTTP or HTTPS address. Call get_display_capabilities first to confirm connectivity and browser/runtime support before relying on a remote page. Requires authentication with at least content_only scope. Returns id, name, duration, file (stored filename) and version (content version ID).
send_url
Creates or updates a mutable JSON data slot (max 2 MB). Display HTML reads it via the readUrl returned in the response: /data/u/{publicSlug}/{slug}.json (personal) or /data/g/{groupSlug}/{slug}.json (group). Slugs are unique per-user or per-group — two users can both use slug 'weather'. Human-readable slugs are not secret. Two slot kinds are supported: omit 'type' or pass 'value' to store the JSON content verbatim (default); pass 'type' = 'aggregate' to store a composite slot whose 'content' is a definition document of the shape { sources: [{slot,as}], onMissing, includeMeta }. The public read URL of an aggregate slot resolves and combines the source slots on every fetch, so displays only need one request to read multiple producers. Aggregate sources must live in the same scope (personal aggregate → personal sources; group aggregate → sources in the same group). Requires authentication with content scope. Note: in the dashboard UI, aggregate slots are presented to the user as 'JSON collections'. When a user asks to 'create a JSON collection' or 'combine slots', use type='aggregate'.
set_data_slot
Grants a specific user access to a specific display within an organization. Creates or updates the grant. The target user must be a member of the organization. Access levels: 'view' (see status) or 'control' (send content). Requires admin scope.
set_display_grant
DRY-RUN validator for HTML payloads. Pushes the HTML through agentView's size + description checks WITHOUT touching any real display. Use this when an LLM has just generated HTML and you want to confirm it is well-formed and within limits BEFORE risking a real send_html call. No display_id is needed; the response carries simulated=true. Capped at 1 MB.
test_display_content
Updates the name and/or description of an existing asset. The URL does not change. At least one of name or description must be provided. Requires authentication with at least content_only scope.
update_asset
Upload one or more files (images, fonts, CSS, video, etc.) as assets and receive stable URLs. Use these URLs in your HTML with <img src="..."> or @font-face { src: url("...") }. Assets are cached on displays — only the HTML is re-downloaded on updates. Pass files as base64-encoded data. IMPORTANT: When creating content for an organization display (a display with an orgId), pass that orgId as group_id so assets are stored in the group's shared storage pool. Omit group_id only for personal displays. Requires authentication with at least content_only scope.
upload_asset
How do I improve a ChatGPT Plugin's 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.
What are agentView alternatives on ChatGPT?
As of 2026-09-28, agentView competes with Bitmovin, StreamExpose, VisualSong in ChatGPT Video Infrastructure & Live Visuals, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.