Skip to main content
GET
/
api
/
skills
/
marketplace
Skills Marketplace
curl --request GET \
  --url https://api.example.com/api/skills/marketplace \
  --header 'Content-Type: application/json' \
  --data '
{
  "source_url": "<string>",
  "name": "<string>",
  "description": "<string>"
}
'
{
  "skills": [
    {
      "id": "<string>",
      "organization_id": "<string>",
      "name": "<string>",
      "description": "<string>",
      "category": "<string>",
      "risk": "<string>",
      "source": "<string>",
      "source_url": "<string>",
      "metadata": {},
      "installed": true,
      "installed_at": "<string>",
      "created_at": "<string>",
      "updated_at": "<string>"
    }
  ],
  "ok": true,
  "skill_id": "<string>",
  "gateway_id": "<string>",
  "installed": true
}
Browse and manage skills in the organization marketplace.

Authentication

Requires organization admin authentication.

Endpoints

List Skills

GET /api/skills/marketplace List marketplace skills with installation status for a specific gateway.

Query Parameters

gateway_id
string
required
Gateway UUID to check installation status
Search skills by name, description, category, risk, or source
category
string
Filter by category. Use uncategorized for skills without a category
risk
string
Filter by risk level. Use uncategorized for skills without risk classification
pack_id
string
Filter skills from a specific skill pack
limit
integer
Number of items per page (1-200)
offset
integer
default:"0"
Pagination offset

Response

skills
array
Array of skill cards
id
string
Skill UUID
organization_id
string
Organization UUID
name
string
Skill display name
description
string
Skill description
category
string
Skill category (e.g., devops, data, communication)
risk
string
Risk level (e.g., low, medium, high)
source
string
Source label (e.g., relative path in pack repository)
source_url
string
GitHub tree URL pointing to skill location
metadata
object
Additional metadata (discovery mode, pack branch, etc.)
installed
boolean
Whether the skill is installed on the specified gateway
installed_at
string
ISO 8601 timestamp when installed
created_at
string
ISO 8601 timestamp
updated_at
string
ISO 8601 timestamp

Example Request

curl -X GET "https://api.openclaw.ai/api/skills/marketplace?gateway_id=550e8400-e29b-41d4-a716-446655440000&category=devops" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

[
  {
    "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "organization_id": "8b9e6679-7425-40de-944b-e07fc1f90ae8",
    "name": "Kubernetes Deploy",
    "description": "Deploy applications to Kubernetes clusters",
    "category": "devops",
    "risk": "medium",
    "source": "kubernetes/deploy",
    "source_url": "https://github.com/openclaw/skills/tree/main/kubernetes/deploy",
    "metadata": {
      "discovery_mode": "skills_index",
      "pack_branch": "main"
    },
    "installed": true,
    "installed_at": "2026-03-01T12:00:00Z",
    "created_at": "2026-02-28T10:00:00Z",
    "updated_at": "2026-03-01T10:00:00Z"
  }
]

Add Skill

POST /api/skills/marketplace Manually register a skill URL in the marketplace.

Request Body

source_url
string
required
HTTPS URL to skill repository or tree location
name
string
Skill name (inferred from URL if not provided)
description
string
Skill description

Example Request

curl -X POST "https://api.openclaw.ai/api/skills/marketplace" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source_url": "https://github.com/myorg/skills/tree/main/custom-skill",
    "name": "Custom Skill",
    "description": "A custom skill for my organization"
  }'

Install Skill

POST /api/skills/marketplace/{skill_id}/install Install a skill to a gateway by dispatching installation instructions to the gateway agent.

Query Parameters

gateway_id
string
required
Gateway UUID where skill should be installed

Response

ok
boolean
Always true on success
skill_id
string
Skill UUID
gateway_id
string
Gateway UUID
installed
boolean
Always true for install action

Example Request

curl -X POST "https://api.openclaw.ai/api/skills/marketplace/7c9e6679-7425-40de-944b-e07fc1f90ae7/install?gateway_id=550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

{
  "ok": true,
  "skill_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "gateway_id": "550e8400-e29b-41d4-a716-446655440000",
  "installed": true
}

Uninstall Skill

POST /api/skills/marketplace/{skill_id}/uninstall Uninstall a skill from a gateway.

Query Parameters

gateway_id
string
required
Gateway UUID where skill should be uninstalled

Example Request

curl -X POST "https://api.openclaw.ai/api/skills/marketplace/7c9e6679-7425-40de-944b-e07fc1f90ae7/uninstall?gateway_id=550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer YOUR_API_KEY"

Delete Skill

DELETE /api/skills/marketplace/{skill_id} Remove a skill from the marketplace catalog and all gateway installations.

Example Request

curl -X DELETE "https://api.openclaw.ai/api/skills/marketplace/7c9e6679-7425-40de-944b-e07fc1f90ae7" \
  -H "Authorization: Bearer YOUR_API_KEY"

Installation Process

When you install a skill, Mission Control:
  1. Validates the gateway has a configured workspace root
  2. Dispatches an installation message to the gateway agent
  3. Records the installation state in the database
The gateway agent receives instructions like:
MISSION CONTROL SKILL INSTALL REQUEST
Skill name: Kubernetes Deploy
Skill source URL: https://github.com/openclaw/skills/tree/main/kubernetes/deploy
Install destination: /workspace/skills

Actions:
1. Ensure the install destination exists.
2. Install or update the skill from the source URL into the destination.
3. Verify the skill is discoverable by the runtime.
4. Reply with success or failure details.

Build docs developers (and LLMs) love