# List the harnesses, models and connectors the org can run

`GET /o/{org}/agents/available`

One discovery read. `models` has one row per harness and model: a
session's `model` must be an `id` listed for its `agent`, with an
`effort` from that row. `harnesses` adds each harness's runtime,
suggested setups, tools and plugins. `mcp_servers` are the remote MCP
servers that can be connected; `plugins` the plugin marketplaces.
Org members, signed in; an API key cannot call this.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `org` | path | string | yes | The org's slug or id. A caller with no role in the org gets `404`. |
| `harness` | query | string | no | Only this harness in `harnesses`. |

## Example request

```bash
curl "https://api.prix.dev/o/$RUSH_ORG/agents/available" \
  -H "Authorization: Bearer $RUSH_TOKEN"
```

```typescript
const org = process.env.RUSH_ORG;

const res = await fetch(`https://api.prix.dev/o/${org}/agents/available`, {
  headers: {
    Authorization: `Bearer ${process.env.RUSH_TOKEN}`,
  },
});

console.log(res.status, await res.json());
```

```python
import os

import requests

org = os.environ["RUSH_ORG"]

res = requests.get(
    f"https://api.prix.dev/o/{org}/agents/available",
    headers={"Authorization": f"Bearer {os.environ['RUSH_TOKEN']}"},
)

print(res.status_code, res.json())
```

## Responses

### 200

The catalog.

- `catalog_revision` (string, required): Changes whenever anything below changes.
- `checked_at` (string, required)
- `harnesses` (array of object, required)
  - `id` (string, required, one of `claude`, `codex`, `opencode`): Launch-boundary managed harnesses.
  - `display_name` (string, required)
  - `runtime` (object, required)
    - `latest_verified` (object, required)
      - `available` (boolean, required)
      - `disabled_reason` (string, optional)
      - `id` (string | null, required): The CLI version sessions run today.
      - `checked_at` (string, required)
      - `pin_guarantee` (boolean, required)
      - `image_digest` (string | null, required)
    - `pinned` (CatalogSupport, required)
      - `available` (boolean, required)
      - `disabled_reason` (string, optional)
  - `models` (array of object, required)
    - `id` (string, required)
    - `display_name` (string, required)
    - `effort` (array of string, required)
    - `speed` (array of object, required)
      - `id` (string, required, one of `standard`, `fast`)
      - `available` (boolean, required)
      - `disabled_reason` (string, optional)
  - `suggested_setups` (array of object, required)
    - `id` (string, required, one of `workhorse`, `deep_work`, `quick_tasks`)
    - `label` (string, required)
    - `defaults` (object, required)
      - `model` (object, required)
        - `selection` (string, required, one of `pinned`)
        - `id` (string, required)
      - `effort` (string | null, required)
      - `speed` (string, required, one of `standard`, `fast`)
  - `native_tools` (array of object, required)
    - `id` (string, required)
    - `label` (string, required)
    - `available` (boolean, required)
    - `disabled_reason` (string, optional)
  - `plugins` (array of object, required)
    - `catalog_id` (string, required)
    - `name` (string, required)
    - `description` (string, required)
    - `version` (string, required)
    - `digest` (string, required)
    - `harnesses` (array of string, required)
    - `requires_browser` (boolean, required)
    - `source` (string, required)
  - `capabilities` (object, required)
    - `browser` (CatalogSupport, required)
      - `available` (boolean, required)
      - `disabled_reason` (string, optional)
    - `computer` (CatalogSupport, required)
      - `available` (boolean, required)
      - `disabled_reason` (string, optional)
    - `tools_selected` (CatalogSupport, required)
      - `available` (boolean, required)
      - `disabled_reason` (string, optional)
    - `network_allowlist` (CatalogSupport, required)
      - `available` (boolean, required)
      - `disabled_reason` (string, optional)
    - `instructions` (CatalogSupport, required)
      - `available` (boolean, required)
      - `disabled_reason` (string, optional)
    - `configuration` (CatalogSupport, required)
      - `available` (boolean, required)
      - `disabled_reason` (string, optional)
- `models` (array of object, required): One row per harness and model. A session's `model` must be an `id` listed for its harness.
  - `id` (string, required): What the harness CLI takes after `--model`: bare for claude and codex, `provider/model` for opencode.
  - `display_name` (string, optional)
  - `provider` (string, required)
  - `type` (string, required, one of `text`)
  - `pricing` (object, required)
    - `input_per_million` (number, optional): USD per million input tokens.
    - `output_per_million` (number, optional)
  - `harnesses` (array of string, required)
  - `effort` (array of string, required): Effort levels the model takes; empty means none.
  - `modes` (array of string, required): `fast` when the model has a fast mode.
- `mcp_servers` (array of object, required): Remote MCP servers that can be connected (OAuth).
  - `name` (string, required)
  - `slug` (string, required)
  - `title` (string, optional)
  - `description` (string, required)
  - `category` (string, required)
  - `tags` (array of string, required)
  - `verified` (boolean, required)
  - `official` (boolean, required)
  - `author` (string, required)
  - `remotes` (array of object, optional)
    - `type` (string, required)
    - `url` (string, required)
  - `repositoryUrl` (string, optional)
  - `documentationUrl` (string, optional)
  - `oauth` (boolean, optional)
  - `version` (string, optional)
  - `downloads` (integer, optional)
  - `packages` (array of any, optional)
- `mcp_categories` (array of object, required)
  - `name` (string, required)
  - `count` (integer, required)
- `plugins` (object, required)
  - `marketplaces` (array of object, required)
    - `name` (string, required)
    - `source` (string, required): e.g. `github:owner/repo`.
  - `catalog` (object, required)
    - `url` (string, required): Short-lived signed URL of the plugin catalog JSON.
    - `expires_at` (integer, required): Unix seconds.

### 401

No bearer, an unknown, revoked or expired one, or an API key on a route keys cannot call.

### 404

No such resource for the caller, including one that exists in an org the caller cannot see.

## Example response (200)

```json
{
  "catalog_revision": "edd837ea88ebb5b4c0c78d66aff6f1fbb94347d75a97a0e70a4b286a665f8b21",
  "checked_at": "2026-10-06T17:24:17.300Z",
  "harnesses": [
    {
      "id": "claude",
      "display_name": "Claude Code",
      "runtime": {
        "latest_verified": {
          "id": "2.1.291",
          "checked_at": "2026-10-06T17:24:17.300Z",
          "pin_guarantee": true,
          "image_digest": null,
          "available": true
        },
        "pinned": {
          "available": true
        }
      },
      "models": [
        {
          "id": "claude-opus-5-5",
          "display_name": "Opus 5.5",
          "effort": [
            "low",
            "medium",
            "high",
            "xhigh",
            "max"
          ],
          "speed": [
            {
              "id": "standard",
              "available": true
            },
            {
              "id": "fast",
              "available": true
            }
          ]
        }
      ],
      "suggested_setups": [
        {
          "id": "workhorse",
          "label": "Workhorse",
          "defaults": {
            "model": {
              "selection": "pinned",
              "id": "claude-opus-5-5"
            },
            "effort": "medium",
            "speed": "standard"
          }
        }
      ],
      "native_tools": [
        {
          "id": "WebSearch",
          "label": "Web search",
          "available": true
        }
      ],
      "plugins": [],
      "capabilities": {
        "browser": {
          "available": true
        },
        "computer": {
          "available": true
        },
        "tools_selected": {
          "available": true
        },
        "network_allowlist": {
          "available": false,
          "disabled_reason": "Not available yet."
        },
        "instructions": {
          "available": true
        },
        "configuration": {
          "available": true
        }
      }
    }
  ],
  "models": [
    {
      "id": "claude-opus-5-5",
      "display_name": "Opus 5.5",
      "provider": "anthropic",
      "type": "text",
      "harnesses": [
        "claude"
      ],
      "pricing": {
        "input_per_million": 5,
        "output_per_million": 25
      },
      "effort": [
        "low",
        "medium",
        "high",
        "xhigh",
        "max"
      ],
      "modes": [
        "fast"
      ]
    },
    {
      "id": "gpt-5.5",
      "display_name": "GPT-5.5",
      "provider": "openai",
      "type": "text",
      "harnesses": [
        "codex"
      ],
      "pricing": {
        "input_per_million": 1.25,
        "output_per_million": 10
      },
      "effort": [
        "minimal",
        "low",
        "medium",
        "high"
      ],
      "modes": []
    }
  ],
  "mcp_servers": [
    {
      "name": "Stripe",
      "slug": "stripe",
      "title": "Stripe",
      "description": "Manage payments and billing.",
      "category": "Finance",
      "tags": [
        "payments",
        "finance"
      ],
      "verified": true,
      "official": true,
      "author": "Stripe",
      "remotes": [
        {
          "type": "streamable-http",
          "url": "https://mcp.stripe.com/"
        }
      ],
      "documentationUrl": "https://docs.stripe.com/mcp",
      "oauth": true
    }
  ],
  "mcp_categories": [
    {
      "name": "Finance",
      "count": 7
    }
  ],
  "plugins": {
    "marketplaces": [
      {
        "name": "prix-official",
        "source": "github:phnx-labs/.agents-extras"
      },
      {
        "name": "anthropic-official",
        "source": "github:anthropics/claude-plugins-official"
      }
    ],
    "catalog": {
      "url": "https://example-bucket.r2.cloudflarestorage.com/plugins-catalog.json?X-Amz-Signature=3f1c",
      "expires_at": 1791306257
    }
  }
}
```
