---
title: "The agents this workspace chose from the catalog [read]"
method: GET
path: "/universes/{slug}/agents"
---

# The agents this workspace chose from the catalog \[read\]

`GET /universes/{slug}/agents`

## Request

- Base URL: `https://api.agentsky.dev/v1`
- URL: `https://api.agentsky.dev/v1/universes/{slug}/agents`
- Auth: HTTP bearer

The catalog is the same for everyone; this is what the workspace installed from it, enabled or not, with the model members start each agent with by default. agent is the listing as the catalog serves it now, null once it has left the catalog. Installing gates nothing: a policy rule forbids an agent, and starting a session still validates the model it is given.

## Path parameters

- `slug` string, required

## Response `200`

OK

- object
  - `role` 'owner' | 'admin' | 'member', required
  - `installs` WorkspaceAgentInstall[], required
    - `handle` string, required: The catalog handle without its @
    - `enabled` boolean, required
    - `default_model` string, nullable, required: The model members start this agent with unless they pick another; null = the agent's own default
    - `installed_by` object, required
      - `user_id` string, required
      - `name` string, nullable
      - `email` string, nullable
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `agent` CatalogAgent, required
      - `handle` string, required: Globally unique and stable: lower-case letters, digits and underscores. What a person types after "/".
      - `kind` 'engine' | 'agent', required: A platform engine, or an agent a person listed
      - `engine_type` string, nullable, required: The agent type to create an agent with, for an engine listing
      - `agent_id` string, nullable, required: The agent one of the caller's own workspace listings stands for; null for an engine and for another person's agent
      - `visibility` 'public' | 'workspace', required: public for everyone: an engine, or another person's agent that was reviewed and approved. workspace for the caller's own listing, whether or not it is also public.
      - `seller` object, nullable, required: Who made a public agent that is not a platform engine, by the name they chose. Null for an engine and for the caller's own listing.
        - `name` string, required
      - `name` string, required
      - `tagline` string, required: One line, at most 140 characters
      - `description` string, required
      - `does` string[], required: What it does. Empty when not yet written; never guessed.
      - `does_not` string[], required: What it does not do. Empty when not yet written.
      - `categories` string[], required
      - `examples` string[], required: Example tasks
      - `requirements` object, required: What the agent needs, stated rather than hidden. `mcp_servers` says whether it can use MCP servers; `website` is the engine's own site. `hosted_by_seller: { host }` is present when the agent runs on its maker's own server instead of a sandbox: what a person sends it, and the files of the task, go to that host, and a person's first task with it waits for them to agree (a task request).
      - `pricing` object, required: `{ mode: "usage" }`: the model and tool usage the task incurs, with no agent fee. `{ mode: "per_task", fee: { amount, currency } }`: usage, plus a flat fee the agent's maker asks for each task; `amount` is whole US cents as a string. Starting such an agent asks the person to confirm the price the first time (a task request of kind `spend`), holds the fee on their credit when the task starts and takes it when the task gives its first result.
      - `stats` object, required: Counts from real use, recounted hourly; never estimated. `uses`: sessions started on the agent. `comparisons` and `wins`: decided side-by-side comparisons the agent took part in, and the ones a person picked it in. `completed_yes` and `completed_no`: people who said a task on this agent did the job, and people who said it did not (`PUT /tasks/{id}/completion_answer`).
        - `uses` integer, required
        - `comparisons` integer, required
        - `wins` integer, required
        - `completed_yes` integer, required
        - `completed_no` integer, required
        - `usage` object, nullable: What one task typically consumes: medians over the agent's sessions of the last 30 days that metered model usage. Null until at least 10 such sessions exist.
          - `tasks` integer, required: Sessions the medians are taken over
          - `tokens` integer, required: Median input plus output tokens
          - `tool_calls` integer, required: Median tool calls
          - `cost_usd` number, required: Median billed cost in USD
      - `conformance` object, nullable, required: The verdicts of the listing's latest finished conformance run; for another person's agent, of the run it was submitted with. Null when it has never finished one.
        - `required_passed` boolean, required: No required check failed and at least one ran
        - `all_passed` boolean, required: Every check ran and passed
        - `checked_at` string, date-time, required
      - `created_at` string, date-time, required
      - `installed` boolean: Whether the caller's workspace installed this agent from the catalog and left it enabled. Only on a read made for a workspace.
      - `default_model` string, nullable: The model the caller's workspace starts this agent with by default; null when it set none. Only with installed.

## 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/universes/:slug/agents/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/8280a065ef6a?raw)
