Installed extensions
List the extensions, products, tools and models your organization has enabled — from the Platform SDK, or from a Scrydon tool scoped to the run's own workspace
extensions.catalog.read lists what your organization has installed: each
extension, its products, the tools those products offer and the models it
serves.
import { createHttpPlatformTransport, createScrydonSDK } from '@scrydon/sdk/platform'
const platform = createScrydonSDK(
createHttpPlatformTransport({
baseUrl: 'https://scrydon.com',
headers: () => ({ authorization: `Bearer ${accessToken}` }),
})
)
const catalog = await platform.extensions.catalog.read({ capability: 'llm' })
for (const product of catalog.products) console.log(product.name, product.toolIds)| Operation | HTTP | What it does |
|---|---|---|
extensions.catalog.read | POST /api/platform/v1/extensions/catalog | Lists installed extensions, their products, tools and models. |
Over HTTP it needs tools:read and an organization-level caller. It is
read-only and safe to retry. enabledOnly defaults to true, which lists only
what the organization has enabled; enabledOnly: false lists everything
installed. extensionId and capability narrow the listing.
From a Scrydon tool: ctx.extensions
Inside a Scrydon tool the same operation is ctx.extensions.catalog.read, and
it answers for the run's own workspace: it lists only what is enabled for
the organization and available to that workspace. An extension the
organization enabled for another workspace only is not listed.
const catalog = await ctx.extensions.catalog.read({ capability: 'llm' })On this path enabledOnly is always true. A request with
enabledOnly: false, or one that names a workspace, is refused before anything
is read, so a tool cannot list another workspace's extensions or everything
installed in the organization. Declare "extensions.catalog.read" in the
tool's platformOperations.
In a workflow, select the Scrydon tool List installed extensions in an Agent block's tools. It returns names and ids — extensions, products, tools and models — and never a tool's input or output schema. Cortex runs it without asking for approval, because it only reads, and nothing is sent outside the platform.