---
title: "Lista skills disponibles para un Met — locales del workspace + globales no contratadas. Incluye estado derivado (active|pending_credentials|inactive), origin, requires_credentials y mcp_handler para que la UI decida si abrir el modal de credenciales tras un toggle ON."
method: GET
path: "/workspaces/{workspaceId}/agents/{agentId}/skills"
tags: ["Skills"]
---

# Lista skills disponibles para un Met — locales del workspace + globales no contratadas. Incluye estado derivado (active|pending_credentials|inactive), origin, requires_credentials y mcp_handler para que la UI decida si abrir el modal de credenciales tras un toggle ON.

`GET /workspaces/{workspaceId}/agents/{agentId}/skills`

## Request

- Base URL: `https://api.met.meteor.com.co/api/v1`
- URL: `https://api.met.meteor.com.co/api/v1/workspaces/{workspaceId}/agents/{agentId}/skills`
- Auth: one of:
  - `bearer` (a scheme the document does not define)
  - HTTP bearer

Las habilidades que este Met puede tener, con el estado de cada una. El estado es lo que importa: `active` funciona, `pending_credentials` está vinculada pero **no va a ejecutar** hasta que cargues la credencial, e `inactive` no está en uso. Una habilidad en `pending_credentials` no da error al vincularse — falla recién cuando el Met intenta usarla.

## Path parameters

- `workspaceId` number, required
- `agentId` string, required

## Response `200`

- object: Sobre en el que viaja toda respuesta correcta de la API. El recurso está en `data`. Los SDKs oficiales lo desenvuelven por ti; un cliente hecho a mano tiene que leer `.data`.
  - `success` true, required: Siempre `true` en una respuesta 2xx.
  - `data` AgentAvailableSkillsResponseDto, required
    - `skills` AgentAvailableSkillDto[], required
      - `activo` boolean, required: `false` si el usuario la pausó.
      - `descripcion` string, nullable, required
      - `foto_principal` string, nullable, required: Logo de la habilidad. `null` si no tiene.
      - `id` number, required: ID del item de la habilidad.
      - `linked` boolean, required: `true` si este Met ya la tiene vinculada.
      - `mcp_handler` string, nullable, required: Handler del primer MCP que pide credenciales, para abrir el formulario correcto.
      - `mcps_count` number, required: Cuántos MCP distintos trae la habilidad.
      - `nombre` string, required
      - `origin` 'workspace' | 'store', required: `workspace` = copia local ya contratada; `store` = plantilla global sin contratar.
      - `prompt_base_length` number, required: Largo del prompt base, en caracteres. Va el largo y no el texto: el prompt es configuración interna de la habilidad, no parte de esta vista.
      - `requires_credentials` boolean, required: `true` si algún MCP de la habilidad pide credenciales para funcionar.
      - `status` 'active' | 'pending_credentials' | 'inactive', required: Estado derivado, no persistido: `active` (lista para invocar tools), `pending_credentials` (su MCP necesita credenciales y faltan) o `inactive` (pausada por el usuario).

## Other responses

- `400`: La request no es válida: un campo no pasa validación, falta un parámetro requerido o el recurso no admite la transición solicitada.
- `401`: API key ausente, inválida, revocada o expirada — o el workspace está bloqueado.
- `403`: La key está autenticada pero no puede ejecutar esta operación: scope faltante, capacidad deshabilitada, modo test restringido o recurso fuera de su cartera.
- `404`: El recurso no existe o no está disponible dentro del alcance de la key. No revela la existencia de recursos de otros tenants.
- `429`: Se superó el límite por minuto de la key o la cuota del plan. Respeta `Retry-After`; el SDK ya reintenta solo.
- `500`: Error del servidor o del Met que ejecutaba. El SDK reintenta los 5xx con backoff.

---

[API](https://skmtc.dev/meteor/apis/met-public-api.md) · [All operations](https://skmtc.dev/meteor/apis/met-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/meteor/apis/met-public-api/revisions/5d9ca294295c?raw)
