---
title: "Everything agents can use, as one Plugin list; or the installed plugin bundles [read]"
method: GET
path: "/plugins"
---

# Everything agents can use, as one Plugin list; or the installed plugin bundles \[read\]

`GET /plugins`

## Request

- Base URL: `https://api.agentsky.dev/v1`
- URL: `https://api.agentsky.dev/v1/plugins`
- Auth: HTTP bearer

With `view`, one list of Plugins over every source: connected apps (yours, shared with the workspace, the workspace's services), gateway tools (priced from the gateway's endpoint directory), chat apps, plugin bundles, standalone skills, custom MCP servers (vault secrets with a server address and servers agents declare), browser logins and the Mac app's plugins. `yours` is what is added, off or waiting on the person (those first); `discover` is what can still be added, without anything `yours` lists (with `source`, that source's whole catalog, added ones marked), paged through the connector catalog with `cursor` (a cursor from other filters is 400 invalid_cursor). A source that cannot be read is named in `unavailable` and the rest still answer. A workspace key lists only what the workspace holds; a person's own apps, chat apps and Macs need the person's own key. One product is one plugin: an app and a chat app (or a tool) of the same product are listed once, under the product's first id with the others as `aliases`, `needs_you` when any part needs the person, else `added` when any part is added; `source=` lists that source alone, unmerged, by each plugin's own id. Without `view` this answers the installed plugin bundles exactly as before: each bundle's name and the workspace skills named plugin:<plugin>/<part> it installed.

## Query parameters

- `view` 'yours' | 'discover'
- `q` string
- `use` 'work_apps' | 'search_data' | 'create_media' | 'message' | 'this_mac' | 'skills'
- `cursor` string
- `source` 'app' | 'tool' | 'chat' | 'bundle' | 'skill' | 'mcp' | 'mac' | 'browser'
- `agent_id` string
- `session_id` string
- `include` string

## Response `200`

OK

- union
  - PluginList
    - `data` Plugin[], required
      - `id` string, required: `<source>:<key>`: app:gmail, tool:dataforseo.serp, chat:slack, bundle:review-kit, skill:skl_…, mcp:<first 8 hex of the address's sha256>, mac:meetings, browser:mine.
      - `name` string, required
      - `description` string, required: One line
      - `provider` object, required
        - `id` string, required
        - `name` string, required
        - `domain` string, nullable, required
        - `logo` string, nullable, required: Absolute URL of the provider's mark; null: show its initial
      - `price` object, required
        - `display` string, required: One short phrase: "$0.002 / call", "Free", "Provider pricing"
        - `unit` 'call' | 'mtok' | 'month' | 'null', nullable, required
        - `amount` number, nullable, required: USD per unit, from the gateway's endpoint directory
        - `list_amount` number, nullable
        - `kind` 'free' | 'credits' | 'plan' | 'provider', required
      - `status` 'added' | 'needs_you' | 'available' | 'off', required
      - `scope` 'me' | 'workspace', required
      - `uses` string[], required
      - `gives` object[], required
        - `type` 'mcp' | 'api' | 'skill' | 'channel' | 'mac', required
        - `name` string, required
        - `ref` string, required
      - `parts` PluginPart[], required: Everything the plugin is made of, each with its own status: an app's connection (and a workspace service's tools as MCP parts), a tool's capabilities, a chat app's connections, a bundle's skills, MCP servers and the apps it uses, a Mac feature's connections by category and the macOS permissions it asks for
        - `type` 'connection' | 'tool' | 'mcp' | 'skill' | 'command' | 'chat' | 'routine' | 'rule' | 'mac' | 'agent', required
        - `name` string, required
        - `description` string: A skill part's latest saved description, when available; used in the composer's slash picker
        - `status` 'added' | 'needs_you' | 'paused' | 'available', required
        - `ref` string, required
        - `category` string
        - `plugin_id` string: In a merged product, the id this part came from (chat:slack), to add or remove that part alone
      - `requires` object[], required
        - `plugin_id` string, required
        - `reason` string, required
      - `off_for` object, required
        - `agents` string[], required
        - `session` boolean
      - `next` object: What a person has to finish before it works
        - `url` string
        - `steps` string[]
      - `aliases` string[]: One product offered by several sources (Slack as a connected app and as a chat app; GitHub and its code review tool) is one plugin under its first id; these are its other ids, which still answer GET /plugins/{id} and still count in off lists
    - `next_cursor` string, nullable, required
    - `unavailable` PluginGap[], required
      - `source` 'app' | 'tool' | 'chat' | 'bundle' | 'skill' | 'mcp' | 'mac' | 'browser', required
      - `message` string, required
    - `layers` object: With agent_id or session_id: that agent's and chat's own lists of switched-off plugin ids
      - `agent` object
        - `id` string
        - `plugins_off` string[]
      - `session` object
        - `id` string
        - `agent_id` string, nullable
        - `plugins_off` string[]
        - `agent_plugins_off` string[]
  - object: Without view
    - `plugins` object[]
      - `name` string
      - `skills` Skill[]
        - `id` string, required
        - `displayName` string, required
        - `latestRevisionId` string, nullable, required: What `latest` references resolve to.
        - `attachByDefault` boolean, required: Whether every new session in the workspace starts with this skill's latest revision.
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required

## Other responses

- `default`: Error — { error: { code, message, request_id } }

## Changes

- **2026-11-02** `e5e8f0229a99`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/agentsky/apis/agentsky-developer-api/changes/plugins/get.md)

---

[API](https://skmtc.dev/agentsky/apis/agentsky-developer-api.md) - [All operations](https://skmtc.dev/agentsky/apis/agentsky-developer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/agentsky/apis/agentsky-developer-api/revisions/0d435187cd55?raw)
