Skip to content

agentView

by agentview.de · remote · no sign-in to list tools · v1.0.0 · published by de.agentview

Display delivery platform for AI agents. Push HTML, dashboards and live data to screens.

Deletes · 20Final · 1Changes · 12

57 tools: 20 can delete or cancel things, 1 do something that can't be undone, 12 change things and 24 only read.

Scanned Oct 21, 2026

5 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http agentview https://agentview.de/mcp

Findings

Matches of fixed checks, with the text they matched.

3 warn2 info
  • The server marks "authenticate" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "validate": a word for reading.

    What this check looks for
  • The server marks "get_auth_session" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "get_auth_session" says "get": a word for reading.

    What this check looks for
  • The server marks "get_display_preview_url" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "get_display_preview_url" says "get": a word for reading.

    What this check looks for
  • The description mentions "credential".

    Matched text

    description: "...-side state remembers this call, so the credential still travels on every protected call a..."

    What this check looks for
  • Infologout

    The description mentions "credential".

    Matched text

    description: "...op acting as the user, stop sending the credential."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

57 tools

Deletes or cancels 20Claude Code: deny
  • assign_display_categoriesAssigns displays to categories.No findings

    Why it is in this group

    • The name "assign_display_categories" says "assign": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Assigns displays to categories. mode 'replace' (default) sets the full category list of each display in display_ids to category_ids; mode 'add' or 'remove' adds/removes one category (category_ids[0]) across many displays without touching other assignments. Discover IDs with list_display_categories; create categories with manage_display_category.

    Annotations the server declares

    • title: Assign Display Categories
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: false
  • broadcast_contentSends HTML to many displays at once.No findings

    Why it is in this group

    • The name "broadcast_content" says "broadcast": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Sends HTML to many displays at once. Target explicit display_ids, all=true for every accessible display, or include_category_ids to reach every display in those categories (include_descendants for subcategories, dry_run to preview matches without sending). Locked displays are skipped with reasons. For a single display use send_html. Requires content scope.

    Annotations the server declares

    • title: Broadcast Content
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
  • clear_displayRemoves the current live content from a display and returns it to its idle/default state.No findings

    Why it is in this group

    • The description's first verb is "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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').

    Annotations the server declares

    • title: Clear Display
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: false
  • configure_displayUpdates display settings: rename (name), lock or unlock content changes (locked), privacy mode for share links (privacy_mode), embed-origin allowlist (origins), hardware permission…No findings

    Why it is in this group

    • The description's first verb is "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Updates display settings: rename (name), lock or unlock content changes (locked), privacy mode for share links (privacy_mode), embed-origin allowlist (origins), hardware permissions (camera, microphone, geolocation), preferred language, mouse cursor, badge overlay and watermark position. Only the fields you pass are changed; online displays apply changes immediately. Use for any display setting change. Not for sending content (send_html, send_url) or deleting (delete_display). Requires admin scope.

    Annotations the server declares

    • title: Configure Display
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: false
  • configure_organizationUpdates organization settings: rename (name) and/or network connectivity defaults for all its displays (default_connectivity_mode, global_whitelist).No findings

    Why it is in this group

    • The description's first verb is "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Updates organization settings: rename (name) and/or network connectivity defaults for all its displays (default_connectivity_mode, global_whitelist). Only provided fields change. Use when an org admin renames the organization or declares network topology. Requires admin scope and org-admin role.

    Annotations the server declares

    • title: Configure Organization
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: false
  • delete_assetDeletes one or more assets.No findings

    Why it is in this group

    • The name "delete_asset" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Deletes one or more assets. Displays referencing deleted assets will show broken images. Requires authentication with at least content_only scope.

    Annotations the server declares

    • title: Delete Asset
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • delete_data_slotPermanently deletes a data slot.No findings

    Why it is in this group

    • The name "delete_data_slot" says "delete": a word for removing or ending something.
    • The description says "Permanently deletes".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Delete Data Slot
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • delete_displayPermanently deletes a display and all its associated content.No findings

    Why it is in this group

    • The name "delete_display" says "delete": a word for removing or ending something.
    • The description says "Permanently deletes".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Delete Display
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • delete_organizationPermanently deletes an organization, releasing all its displays and removing all members.No findings

    Why it is in this group

    • The name "delete_organization" says "delete": a word for removing or ending something.
    • The description says "Permanently deletes".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently deletes an organization, releasing all its displays and removing all members. Only the owner can delete. This cannot be undone. Requires admin scope.

    Annotations the server declares

    • title: Delete Organization
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • manage_display_categoryCreates or renames a display category (categories group displays for broadcast_content include_category_ids).No findings

    Why it is in this group

    • The description's first verb is "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Creates or renames a display category (categories group displays for broadcast_content include_category_ids). action 'create' needs name (optional parent_category_id for a subcategory); action 'rename' needs category_id and new_name — assignments and grants stay intact. Discover IDs with list_display_categories; assign displays with assign_display_categories.

    Annotations the server declares

    • title: Manage Display Category
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • manage_licensesManages premium display licenses: action 'allocate' sets how many license slots an organization gets (licenses, 0 deallocates all), 'assign' binds a free license to a display, 'una…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Manages premium display licenses: action 'allocate' sets how many license slots an organization gets (licenses, 0 deallocates all), 'assign' binds a free license to a display, 'unassign' releases a display's license back to the pool. Check availability first with get_license_info. Requires admin scope.

    Annotations the server declares

    • title: Manage Licenses
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • manage_org_memberManages organization membership: action 'invite' adds a member by email with a role, 'set_role' changes a member's role, 'remove' removes the member.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Manages organization membership: action 'invite' adds a member by email with a role, 'set_role' changes a member's role, 'remove' removes the member. Roles for organizations: 'admin' (manage members and displays), 'manager' (manage displays and content), 'viewer' (read-only); families accept 'child'. Requires admin scope.

    Annotations the server declares

    • title: Manage Org Member
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • remove_display_from_orgRemoves a display from an organization, clearing its group assignment and all display grants.No findings

    Why it is in this group

    • The name "remove_display_from_org" says "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Remove Display from Organization
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • revoke_api_keyPermanently revokes an API key.No findings

    Why it is in this group

    • The name "revoke_api_key" says "revoke": a word for removing or ending something.
    • The description says "irreversible".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently revokes an API key. This is irreversible — the key will immediately stop working. Requires admin scope.

    Annotations the server declares

    • title: Revoke API Key
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • send_htmlShows HTML content on a display: menus, dashboards, welcome pages, schedules or any custom design.No findings

    Why it is in this group

    • The name "send_html" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Shows HTML content on a display: menus, dashboards, welcome pages, schedules or any custom design. slot 'live' (default) replaces the current content; slot 'idle' stores the default/fallback content shown when nothing live is active (idle requires admin scope). Always pass a short description so later content reads stay meaningful. Exactly one of html or base64_html. For external web pages use send_url; to edit current content call read_display_html first. For polished results load prompt render_premium_display_html or resource agentview://public/design-system. Requires content scope.

    Annotations the server declares

    • title: Send HTML
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • send_store_template_to_displayInstalls a published store template onto a display: materializes the HTML, auto-creates required data slots (reusing prior installs) and publishes within seconds.No findings

    Why it is in this group

    • The name "send_store_template_to_display" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Installs a published store template onto a display: materializes the HTML, auto-creates required data slots (reusing prior installs) and publishes within seconds. Call get_store_template_install_options first for valid targets and slots; customize per-slot JSON inline via data_slot_overrides (raw JSON string or inline object per key, max 64 KiB each). Requires content scope and control access to the display.

    Annotations the server declares

    • title: Send Store Template to Display
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: false
  • send_urlShows an external web page on a display via full-page iframe: dashboards, websites or web apps.No findings

    Why it is in this group

    • The name "send_url" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Shows an external web page on a display via full-page iframe: dashboards, websites or web apps. slot 'live' (default) replaces current content; slot 'idle' stores it as default/fallback content (admin scope). The URL must be absolute HTTP(S). Check get_display (response_format 'detailed') first when unsure about connectivity or embedding limits. If the page design is not display-ready, prefer send_html with generated content. Requires content scope.

    Annotations the server declares

    • title: Send URL
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • set_data_slotCreates or updates a mutable JSON data slot (max 2 MB) that display HTML fetches via its readUrl — the live-data backbone for store templates.No findings

    Why it is in this group

    • The name "set_data_slot" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Creates or updates a mutable JSON data slot (max 2 MB) that display HTML fetches via its readUrl — the live-data backbone for store templates. The slug is stable; reusing it updates in place. type 'value' stores JSON verbatim; 'aggregate' composes up to 32 sources ({slot:'name'} or one {prefixMatch:'agent-'}) within the same personal/group scope. Requires content scope. Returns slug, readUrl and size.

    Annotations the server declares

    • title: Set Data Slot
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: false
  • set_display_grantGrants or revokes a member's access to one display inside an organization.No findings

    Why it is in this group

    • The name "set_display_grant" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Grants or revokes a member's access to one display inside an organization. action 'set' (default) creates/updates the grant with access_level 'view' (see status) or 'control' (send content); action 'remove' revokes it. The target user must be an organization member. Requires admin scope.

    Annotations the server declares

    • title: Set Display Grant
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: false
  • update_assetUpdates the name and/or description of an existing asset.No findings

    Why it is in this group

    • The name "update_asset" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Update Asset
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: false
Can't be undone 1Claude Code: ask
  • submit_feedbackSends the user's feedback, feature request or bug report about agentView itself (not display content) for later review.No findings

    Why it is in this group

    • The name "submit_feedback" says "submit": a word for a change.
    • The description's first verb is "send": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    Sends the user's feedback, feature request or bug report about agentView itself (not display content) for later review. You may also ask for it once, unprompted, right after the user has seen their first content on a screen - what they expected, what is missing - since nothing else in the product asks them; ask once and take no for an answer. Confirm the exact wording with the user before sending and send only their own words; optional sentiment. There is no automatic reply. Requires content scope.

    Annotations the server declares

    • title: Submit Feedback
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
Changes things 12Claude Code: ask
  • authenticateValidates a JWT agent token and reports the identity and scope it carries.2 findings

    Why it is in this group

    • The description's first verb is "validate": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...-side state remembers this call, so the credential still travels on every protected call a..."

      What this check looks for
    • Warn

      The server marks "authenticate" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "validate": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Validates a JWT agent token and reports the identity and scope it carries. It caches NOTHING: no server-side state remembers this call, so the credential still travels on every protected call afterwards. Use only when your client cannot send an Authorization: Bearer header; prefer session_request_id-based auth via create_auth_session. Not needed after get_auth_session returned 'active'.

    Annotations the server declares

    • title: Authenticate
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: false
  • claim_displayAdopts an unclaimed guest or pending display as a managed personal display (permanent ownership transfer, counts against quota).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Adopts an unclaimed guest or pending display as a managed personal display (permanent ownership transfer, counts against quota). Use only when the user explicitly wants to take over hardware that is already running; for first-time setup prefer pair_by_code. Requires admin scope.

    Annotations the server declares

    • title: Claim Display
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • create_api_keyCreates a long-lived API key for server-to-server integration without OAuth.No findings

    Why it is in this group

    • The name "create_api_key" says "create": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create API Key
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • create_auth_sessionStarts a browser login and returns a loginUrl plus sessionRequestId.No findings

    Why it is in this group

    • The name "create_auth_session" says "create": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create Auth Session
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • create_displayCreates a display and returns managedUrl, a permanent link that turns whatever browser opens it into that screen.No findings

    Why it is in this group

    • The name "create_display" says "create": a word for a change.
    Description, as the server wrote it
    Creates a display and returns managedUrl, a permanent link that turns whatever browser opens it into that screen. This is the DEFAULT way to a first screen: create, give the user the managedUrl to open on a device they already have (the phone in their hand, a tablet, a spare monitor, a second tab), then send content so they see a real page at once. It asks them to walk nowhere. Prefer pair_by_code only when they are standing at a dedicated screen (TV, wall panel, kiosk) already showing a 6-character code. Optionally creates inside an organization (org_id). Requires mcp:display.setup, granted to connectors on connection; NOT full admin.

    Annotations the server declares

    • title: Create Display
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • create_organizationCreates a new organization and makes the authenticated user the owner.No findings

    Why it is in this group

    • The name "create_organization" says "create": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create Organization
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • get_auth_sessionPolls a login session created by create_auth_session until the user completes the browser login.1 finding

    Why it is in this group

    • The name "get_auth_session" says "get": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "get_auth_session" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "get_auth_session" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get Auth Session
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: false
  • get_display_preview_urlCreates a short-lived signed link showing what a display is presenting RIGHT NOW, rendered inline as a preview widget.1 finding

    Why it is in this group

    • The name "get_display_preview_url" says "get": a word for reading.
    • The description's first verb is "create": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "get_display_preview_url" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "get_display_preview_url" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Creates a short-lived signed link showing what a display is presenting RIGHT NOW, rendered inline as a preview widget. ALWAYS call this when the user wants to SEE their display or screen content (preview, 'zeig mir das Display'). Link lifetime follows the display's privacy mode. Requires content scope.

    Annotations the server declares

    • title: Generate Display Preview Share Link
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: true
  • logoutAcknowledgement only: agentView keeps no identity cache on the MCP session, so there is nothing to clear.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...op acting as the user, stop sending the credential."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Logout
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: false
  • pair_by_codeBinds a screen the user is standing at: a TV, a wall panel, a kiosk, a tablet on the wall.No findings

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Binds a screen the user is standing at: a TV, a wall panel, a kiosk, a tablet on the wall. Use it when they have that screen in front of them, since pairing binds the hardware permanently: ask them to open https://display.agentview.de on the device that should show the content and read you the 6-character code, then call this; profile_name is optional (pass it only if they named the place). Afterwards send content and show it with get_display_preview_url. When they have no screen yet and want to see something now, prefer create_display and hand them its managedUrl. Pairing needs mcp:display.setup (granted to connectors on connection). Pass target_display_id to rebind an EXISTING display onto new hardware (keeps name, settings, content); that needs full admin, which a connector session obtains without re-authorizing: run create_auth_session with scope 'admin', show the loginUrl, poll get_auth_session until active, then call this again with that session_request_id.

    Annotations the server declares

    • title: Pair Display by Code
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • test_display_contentDry-run validator for generated HTML: runs agentView's size and description checks WITHOUT touching a real display.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Dry-run validator for generated HTML: runs agentView's size and description checks WITHOUT touching a real display. Use after composing complex HTML and before send_html or broadcast_content. No display_id needed; the response carries simulated=true. Capped at 1 MB. Requires authentication.

    Annotations the server declares

    • title: Test Display Content
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • upload_assetUpload one or more files (images, fonts, CSS, video, etc.) as assets and receive stable URLs.No findings

    Why it is in this group

    • The name "upload_asset" says "upload": a word for a change.
    Description, as the server wrote it
    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. Assets are cached on displays. Pass files as base64-encoded data. Requires authentication with at least content_only scope.

    Annotations the server declares

    • title: Upload Asset
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
Only reads 24Claude Code: allow
  • fetchFetches one agentView resource by agentview:// URI, e.g.No findings

    Why it is in this group

    • The name "fetch" says "fetch": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Fetch
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_accountReturns the user's account profile: plan and features, personal display limits and remaining quota, accessible display count, organization memberships and points balance.No findings

    Why it is in this group

    • The name "get_account" says "get": a word for reading.
    Description, as the server wrote it
    Returns the user's account profile: plan and features, personal display limits and remaining quota, accessible display count, organization memberships and points balance. Use for subscription, quota and membership questions. Not for listing displays (use list_displays). Requires content scope.

    Annotations the server declares

    • title: Get Account
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_agent_artifactReturns an agent-onboarding artifact shipped with a store template: system prompt, Agent Skills SKILL.md or MCP-config snippet.No findings

    Why it is in this group

    • The name "get_agent_artifact" says "get": a word for reading.
    Description, as the server wrote it
    Returns an agent-onboarding artifact shipped with a store template: system prompt, Agent Skills SKILL.md or MCP-config snippet. Pass slug for the RAW template artifact (before install, {{slot:...}} placeholders intact) or display_id for the display-bound artifact with placeholders resolved against installed slots (ready to save, e.g. into ~/.claude/skills/). Discover keys via get_store_template_details (agentArtifacts array). Template mode needs no auth; display mode requires content scope and display ownership.

    Annotations the server declares

    • title: Get Agent Artifact
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_assetReturns metadata for a single asset including its URL.No findings

    Why it is in this group

    • The name "get_asset" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get Asset
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_data_slotReturns the current JSON content and metadata of a data slot by slug.No findings

    Why it is in this group

    • The name "get_data_slot" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get Data Slot
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_displayReturns one display's state: status, lock, URLs, settings, language and current content summary.No findings

    Why it is in this group

    • The name "get_display" says "get": a word for reading.
    Description, as the server wrote it
    Returns one display's state: status, lock, URLs, settings, language and current content summary. response_format 'detailed' adds browser/runtime facts (screen, viewport, engine), resolved connectivity mode with allowed domains, and full content state (idle content, content URL) — use detailed before generating complex HTML for the display. Use list_displays first to discover IDs. Requires content scope.

    Annotations the server declares

    • title: Get Display
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_license_infoReturns the authenticated user's complete license allocation overview: total premium licenses, personal usage, allocatable licenses, per-organization allocations, and free licenses…No findings

    Why it is in this group

    • The name "get_license_info" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get License Info
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_organizationReturns one organization's details: plan, your role, display count, allocated and remaining license slots.No findings

    Why it is in this group

    • The name "get_organization" says "get": a word for reading.
    Description, as the server wrote it
    Returns one organization's details: plan, your role, display count, allocated and remaining license slots. response_format 'detailed' adds the full member list (with roles) and display list. Use after list_organizations. Requires content scope and membership.

    Annotations the server declares

    • title: Get Organization
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_public_statusReturns the server's public readiness status, version string and discovery URLs.No findings

    Why it is in this group

    • The name "get_public_status" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get Public Status
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_storage_usageReturns the storage pool snapshot (used, limit and remaining bytes) for the personal scope or a group — data slots and uploaded assets share this quota; check before large set_data…No findings

    Why it is in this group

    • The name "get_storage_usage" says "get": a word for reading.
    Description, as the server wrote it
    Returns the storage pool snapshot (used, limit and remaining bytes) for the personal scope or a group — data slots and uploaded assets share this quota; check before large set_data_slot or upload_asset writes. Pass slug to additionally scan which displays reference that data slot (do this before delete_data_slot to know which displays would break). Narrowly-scoped API keys get suppressed=true with zeroed numbers. Requires content scope.

    Annotations the server declares

    • title: Get Storage Usage
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_store_template_contentReturns the raw display HTML of a published store template plus its slot definitions and allowed external origins, for editing or embedding the template yourself.No findings

    Why it is in this group

    • The name "get_store_template_content" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get Store Template Content (HTML + Slots)
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_store_template_detailsReturns full details of one store template: localized title and description, long-form markdown, category, suite, tags, features, preview image and agentArtifacts (bot-onboarding f…No findings

    Why it is in this group

    • The name "get_store_template_details" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get Store Template Details
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_store_template_install_optionsReturns the displays the user can install a store template on plus the data slots it needs (key, label, type, required).No findings

    Why it is in this group

    • The name "get_store_template_install_options" says "get": a word for reading.
    Description, as the server wrote it
    Returns the displays the user can install a store template on plus the data slots it needs (key, label, type, required). Call before send_store_template_to_display. An empty displays list means the user must first set up a display (pair_by_code). Requires content scope.

    Annotations the server declares

    • title: Get Store Template Install Options
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • list_api_keysLists all API keys for the current user.No findings

    Why it is in this group

    • The name "list_api_keys" says "list": a word for reading.
    Description, as the server wrote it
    Lists all API keys for the current user. Returns key metadata (prefix, name, scope, dates) but never the raw key. Requires admin scope.

    Annotations the server declares

    • title: List API Keys
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • list_assetsLists the user's uploaded assets (images, videos, fonts, documents) with public URLs for use in display HTML.No findings

    Why it is in this group

    • The name "list_assets" says "list": a word for reading.
    Description, as the server wrote it
    Lists the user's uploaded assets (images, videos, fonts, documents) with public URLs for use in display HTML. Filter by type, search term or group. Check before upload_asset to avoid duplicates. response_format 'detailed' adds description, size and timestamps per asset. Requires content scope.

    Annotations the server declares

    • title: List Assets
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • list_data_slotsLists data slots with optional filtering.No findings

    Why it is in this group

    • The name "list_data_slots" says "list": a word for reading.
    Description, as the server wrote it
    Lists data slots with optional filtering. Returns metadata only (no jsonContent). Each item includes readUrl. Use readUrl in display HTML fetch() calls. Requires authentication.

    Annotations the server declares

    • title: List Data Slots
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • list_display_categoriesLists the authenticated user's personal display categories with stable IDs, paths and assignment counts.No findings

    Why it is in this group

    • The name "list_display_categories" says "list": a word for reading.
    Description, as the server wrote it
    Lists the authenticated user's personal display categories with stable IDs, paths and assignment counts. Use this to discover existing categories before assigning or replacing categories on a display. Requires authentication with at least content_only scope and display.read capability.

    Annotations the server declares

    • title: List Display Categories
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • list_displaysLists all displays the user can access, with id, name, online status, lock state and device class — the starting point to discover display IDs before get_display, send_html or send…No findings

    Why it is in this group

    • The name "list_displays" says "list": a word for reading.
    Description, as the server wrote it
    Lists all displays the user can access, with id, name, online status, lock state and device class — the starting point to discover display IDs before get_display, send_html or send_store_template_to_display. Pass org_id to list an organization's displays instead. response_format 'detailed' adds screen/viewport facts, URLs and language per display. To show what a display looks like right now, use get_display_preview_url. Requires content scope.

    Annotations the server declares

    • title: List Displays
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • list_organizationsReturns all organizations the authenticated user belongs to with their role, display count, member count and allocated slots.No findings

    Why it is in this group

    • The name "list_organizations" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List Organizations
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • list_store_categoriesLists all published agentView store categories (e.g.No findings

    Why it is in this group

    • The name "list_store_categories" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List Store Categories
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • read_display_htmlReads the raw HTML source currently shown on a display so you can inspect or edit it and push it back with send_html.No findings

    Why it is in this group

    • The name "read_display_html" says "read": a word for reading.
    Description, as the server wrote it
    Reads the raw HTML source currently shown on a display so you can inspect or edit it and push it back with send_html. content_type 'idle' reads the default/fallback content instead. Responses are windowed for large documents: max_bytes (default 51200) and offset page through the source; the result reports totalBytes and truncated. Not for visual previews (use get_display_preview_url). Requires content scope.

    Annotations the server declares

    • title: Read Display HTML
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • search_public_apisSearches 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 c…No findings

    Why it is in this group

    • The name "search_public_apis" says "search": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Search Public APIs
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • search_store_templatesSearches the agentView template store for ready-made display designs ('Zahnarzt-Wartezimmer', 'Bistro', 'reception', ...).No findings

    Why it is in this group

    • The name "search_store_templates" says "search": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Search Store Templates
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http agentview https://agentview.de/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__agentview__list_data_slots",
      "mcp__agentview__get_data_slot",
      "mcp__agentview__get_storage_usage",
      "mcp__agentview__get_public_status",
      "mcp__agentview__get_display",
      "mcp__agentview__list_store_categories",
      "mcp__agentview__get_license_info",
      "mcp__agentview__get_organization",
      "mcp__agentview__search_public_apis",
      "mcp__agentview__get_account",
      "mcp__agentview__get_store_template_content",
      "mcp__agentview__search_store_templates",
      "mcp__agentview__search",
      "mcp__agentview__get_store_template_details",
      "mcp__agentview__list_displays",
      "mcp__agentview__list_assets",
      "mcp__agentview__get_agent_artifact",
      "mcp__agentview__list_api_keys",
      "mcp__agentview__read_display_html",
      "mcp__agentview__list_organizations",
      "mcp__agentview__list_display_categories",
      "mcp__agentview__get_asset",
      "mcp__agentview__fetch",
      "mcp__agentview__get_store_template_install_options"
    ],
    "ask": [
      "mcp__agentview__authenticate",
      "mcp__agentview__create_api_key",
      "mcp__agentview__create_auth_session",
      "mcp__agentview__create_display",
      "mcp__agentview__submit_feedback",
      "mcp__agentview__upload_asset",
      "mcp__agentview__claim_display",
      "mcp__agentview__get_auth_session",
      "mcp__agentview__logout",
      "mcp__agentview__pair_by_code",
      "mcp__agentview__get_display_preview_url",
      "mcp__agentview__create_organization",
      "mcp__agentview__test_display_content"
    ],
    "deny": [
      "mcp__agentview__assign_display_categories",
      "mcp__agentview__set_display_grant",
      "mcp__agentview__broadcast_content",
      "mcp__agentview__manage_licenses",
      "mcp__agentview__send_store_template_to_display",
      "mcp__agentview__delete_data_slot",
      "mcp__agentview__remove_display_from_org",
      "mcp__agentview__set_data_slot",
      "mcp__agentview__configure_display",
      "mcp__agentview__send_url",
      "mcp__agentview__clear_display",
      "mcp__agentview__delete_asset",
      "mcp__agentview__send_html",
      "mcp__agentview__delete_display",
      "mcp__agentview__configure_organization",
      "mcp__agentview__revoke_api_key",
      "mcp__agentview__delete_organization",
      "mcp__agentview__update_asset",
      "mcp__agentview__manage_display_category",
      "mcp__agentview__manage_org_member"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as agentview. Review it before you use it.