> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vistazo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Sharing and access

> Anonymous share links, access requests, and ownership transfer.

Share links are anonymous and read-only. Editing always requires workspace membership.

| Tool                                                    | What it does             |                   |
| ------------------------------------------------------- | ------------------------ | ----------------- |
| [`create_share_link`](#create_share_link)               | Create share link        | Additive write    |
| [`revoke_share_link`](#revoke_share_link)               | Revoke share link        | Destructive write |
| [`list_share_links`](#list_share_links)                 | List share links         | Read-only         |
| [`request_dashboard_access`](#request_dashboard_access) | Request dashboard access | Additive write    |
| [`request_skill_access`](#request_skill_access)         | Request skill access     | Additive write    |
| [`transfer_ownership`](#transfer_ownership)             | Transfer ownership       | Destructive write |

## create\_share\_link

`Additive write` · `Idempotent`

Create an anonymous share link for a dashboard, a chat, OR a skill (pass exactly one of dashboardId/chatId/skillId). Returns a token; the public URL is \{origin}/s/\{token}. ONE link per resource: if an active link already exists its token is returned (existing:true) instead of minting another — revoke\_share\_link first to get a fresh URL. Refuses when the workspace admin has turned external share links off. Dashboard links show the published baseline (the last refresh at default parameters) with a "data as of" stamp — no account, no editing, no filters, no chat. Chat links show a read-only view of the conversation as it CURRENTLY is (live, not a snapshot — turns added later are visible too); viewers cannot reply. Skill links render the skill's markdown document read-only, live. Sharing grants viewing only; to let someone EDIT, invite them to the workspace instead. Dashboards and skills require edit access on that object (owner, editor grantee, an editor workspace default, or a workspace admin); chats can only be shared by their owner. Archived items refuse.

## revoke\_share\_link

`Destructive write`

Revoke a previously created share link by its token. The link stops working immediately (the public URL 404s). Requires edit access to the dashboard or skill, or ownership for a chat link.

## list\_share\_links

`Read-only`

List the active (non-revoked) anonymous share links for a dashboard, chat, or skill (pass exactly one of dashboardId/chatId/skillId) — token, who created it, and when. Use the token to build the public URL (\{origin}/s/\{token}) or to revoke\_share\_link. Requires edit access to the dashboard or skill, or ownership for a chat.

## request\_dashboard\_access

`Additive write` · `Idempotent`

Record a request for edit access to a dashboard you can currently only view. Notifies the dashboard owner and workspace admins (in-app, and by email per their settings) and lists the request on the Sharing tab of that dashboard; it does not grant access by itself. Idempotent — requesting again updates the same record. Requires workspace membership.

## request\_skill\_access

`Additive write` · `Idempotent`

Record a request for edit access to a workspace skill you can currently only read — a viewer grantee, a guest, or a full member on a skill whose workspace default is viewer. Refuses anyone who can already edit (owner, editor grantee, or the editor default). Notifies the skill's owner and the workspace admins (in-app, and by email per their settings) and lists the request on that skill's Sharing pane; it does not grant access by itself. Whoever resolves it grants with set\_skill\_access (role 'editor', which also clears the request) or from that Sharing pane. Idempotent — requesting again updates the same record.

## transfer\_ownership

`Destructive write`

Hand a dashboard or a skill to another workspace member — the ONLY way an `owner` role moves after creation. Pass type ('dashboard' | 'skill'), the object's id, and toUserId (a uid from list\_workspace\_members). A dashboard has exactly one owner: the new owner is granted `owner` and the PREVIOUS owner is demoted to `editor` in the same write — never dropped, so nobody loses access by handing something over. A skill's owner is `ownerId`: the transfer moves it, and with it the owner rung — the new owner always edits and is the one (besides an admin) who may delete; who ELSE edits is the skill's grants + workspace default, untouched by the transfer. `createdBy` is immutable history on both and is never rewritten — after a transfer the author and the owner are different people, deliberately. Who may call it: the object's CURRENT owner, or a workspace admin. Who may receive it: a full workspace member on a builder seat — a guest (share-by-email, explicit grants only) or a viewer seat cannot own, and transferring to the current owner is refused as a no-op. A DASHBOARD additionally moves only to a NAMED COLLABORATOR — someone already holding an explicit grant on it (any role); share it with them first, then transfer. Ownership is also what the refresh-schedule funding chain falls back to, so transferring a dashboard moves that fallback to the new owner on the next scheduled run. Returns the updated object.
