List the add-ons installed in an organization
Every install on the API side, newest first: a project's skills and MCP servers, from the catalog or custom, and the active resource allocations on a project or one of its sandboxes, with whether the org holds each one's listing and its policy. Needs org.read; each install is shown on the projects where the caller may read its kind (skills.read, mcp.read, resources.read). With projectId, it also says what that project's sandboxes are given (effective): the project's resource allocations, the default for every sandbox, and each sandbox that overrides one, with everything it gets (its own quantity, never above the project's). Resources the org does not hold give nothing. Apps installed in Atlas workspaces are listed by Atlas.
Authorization
bearerAuth A RemoteHost API key (rh_sk_...) or a user session token.
In: header
Path Parameters
Query Parameters
The nextCursor of the previous page.
Entries per page, 1 to 100; 50 by default.
Also answer effective for this project; needs resources.read on it.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/orgs/string/addons/attached"{ "installs": [ { "id": "string", "kind": "skill", "scope": { "type": "project", "id": "string" }, "projectId": "string", "quantity": 0, "unit": "string", "listingId": "string", "listing": { "id": "string", "slug": "string", "name": "string", "provenance": "first_party", "status": "string" }, "name": "string", "enabled": true, "status": "string", "held": true, "holding": "held_free", "policy": { "setting": "allow", "allowed": true }, "createdAt": "string", "updatedAt": "string" } ], "effective": { "projectId": "string", "defaults": [ { "listingId": "string", "slug": "string", "name": "string", "quantity": 0, "unit": "string", "source": "project", "allocationId": "string" } ], "sandboxes": [ { "sandboxId": "string", "resources": [ { "listingId": "string", "slug": "string", "name": "string", "quantity": 0, "unit": "string", "source": "project", "allocationId": "string" } ] } ] }, "metadata": { "count": 0, "nextCursor": "string" }}Browse an organization's add-on catalog GET
The catalog as the org sees it: each entry says whether the org holds it and why, and the org's policy for it. Needs `org.read` (every member). Each kind is shown to whoever could add it somewhere: MCP servers to `mcp.read`, skills to `skills.read` and plugins to `plugins.read` on the org or any project in it, apps to every member, resources to `resources.read` on the org or any project, and resources and every paid listing to `billing.read`. A member who holds none of those sees apps only. Browsing shows listed entries; `slug` finds one entry whatever its status but draft, and a retired slug kept as an alias finds the entry that replaced it.
Get one add-on, with its details GET
One catalog entry, as the list shows it, and its kind's details: an MCP server's transport and tools, or a skill's package and requirements. Apps, plugins and resources have none. An alias's id (a retired slug's) answers as the entry that replaced it. A listing the caller could not see in the list is a 404 here too.