Skip to content
Charming Docs
Esc
navigateopen⌘Jpreview
On this page

List App Shares

MCP contract for list_app_shares.

MCP name: list_app_shares

Tool contract

{
  "annotations": {
    "destructiveHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "List App Shares"
  },
  "description": "Use this to see who an app is shared with: lists every outstanding invitation and active grant, labeled by status (`pending` = invited, no access yet; `accepted` = active grantee; `invited` = email-only invite, no Charming account yet) and by role (`collaborator` = read + write; `end-user` = run + write data, not edit source; `viewer` = read only).",
  "execution": {
    "taskSupport": "forbidden"
  },
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "properties": {
      "app_id": {
        "description": "The app ID (UUID) to list shares for",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        "type": "string"
      }
    },
    "required": [
      "app_id"
    ],
    "type": "object"
  },
  "name": "list_app_shares",
  "outputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "additionalProperties": false,
    "properties": {
      "ok": {
        "const": true,
        "description": "Indicates success. Errors arrive as content with isError:true.",
        "type": "boolean"
      },
      "shares": {
        "description": "Every outstanding invitation and active grant on the app.",
        "items": {
          "additionalProperties": false,
          "properties": {
            "accepted_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "ISO timestamp the grant was accepted, or null while pending."
            },
            "grantee": {
              "description": "Grantee identity (handle when set, else email).",
              "type": "string"
            },
            "invited_at": {
              "description": "ISO timestamp the invitation was created.",
              "type": "string"
            },
            "role": {
              "description": "Tier this grantee was invited at. `collaborator` = read + write (edit source). `end-user` = run the app and write its data, but cannot edit the source. `viewer` = read only. The role attaches to the grant at invite/share time and survives status transitions (pending → accepted, invited → pending on materialize), so it's safe to summarize access tiers from this field without consulting status.",
              "enum": [
                "collaborator",
                "end-user",
                "viewer"
              ],
              "type": "string"
            },
            "status": {
              "description": "`invited` = an email with no Charming account yet (materializes to `pending` once they register + verify). `pending` = a Charming user invited, not yet accepted, no access. `accepted` = active collaborator.",
              "enum": [
                "pending",
                "accepted",
                "invited"
              ],
              "type": "string"
            }
          },
          "required": [
            "grantee",
            "status",
            "role",
            "invited_at",
            "accepted_at"
          ],
          "type": "object"
        },
        "type": "array"
      }
    },
    "required": [
      "ok",
      "shares"
    ],
    "type": "object"
  }
}

Was this page helpful?