API Reference
Programmatic access to SkillMill
API Access Requirements
REST API and MCP server access is available to Team and Enterprise subscribers. Anonymous and Free tier users cannot access APIs programmatically.
Authentication
Authenticate API requests using a Bearer token in the Authorization header:
Authorization: Bearer sc_live_YOUR_API_KEYAPI Key Format
sc_live_[32 random characters]Keys are shown once at creation. Store them securely.
Scopes
API keys have scopes that control access:
catalog:read- Read catalog and searchskills:read- Read skill detailssafety:read- View safety scansorg:read- Read org info
Quick Start
cURL
curl -H "Authorization: Bearer sc_live_YOUR_API_KEY" \ https://skillmill.ai/api/catalog
JavaScript
const response = await fetch('https://skillmill.ai/api/catalog', {
headers: {
'Authorization': 'Bearer sc_live_YOUR_API_KEY'
}
});
const skills = await response.json();Python
import requests
response = requests.get(
'https://skillmill.ai/api/catalog',
headers={'Authorization': 'Bearer sc_live_YOUR_API_KEY'}
)
skills = response.json()Endpoints Reference
Catalog
| Method | Endpoint | Description | Scopes |
|---|---|---|---|
| GET | /api/catalog | List all skills in the catalog | catalog:read |
| GET | /api/catalog/search?q={query} | Search skills by keyword | catalog:read |
| GET | /api/catalog/{vendorKey}/{skillKey} | Get a specific skill by vendor and skill key | skills:read |
| GET | /api/catalog/related?vendorKey={key}&skillKey={key} | Get skills related to a specific skill | catalog:read |
| GET | /api/featured | Get featured skills | catalog:read |
Skills
| Method | Endpoint | Description | Scopes |
|---|---|---|---|
| GET | /api/skills/{vendorKey}/{skillKey}/versions | List all versions of a skill | skills:read |
| GET | /api/skills/{vendorKey}/{skillKey}/versions/{version} | Get a specific version | skills:read |
| GET | /api/skills/{vendorKey}/{skillKey}/safety | Get safety scan results | safety:read |
| GET | /api/skills/{vendorKey}/{skillKey}/compliance | Get spec compliance data | skills:read |
Organizations & Publishers
| Method | Endpoint | Description | Scopes |
|---|---|---|---|
| GET | /api/organizations/{slug} | Get organization details | org:read |
| GET | /api/publishers/{username} | Get publisher profile | catalog:read |
Votes
| Method | Endpoint | Description | Scopes |
|---|---|---|---|
| GET | /api/votes?vendorKey={key}&skillKey={key} | Get vote count for a skill | catalog:read |
| GET | /api/votes/counts | Get vote counts for multiple skills | catalog:read |
Harnesses
| Method | Endpoint | Description | Scopes |
|---|---|---|---|
| GET | /api/harnesses | List available AI harnesses and models | catalog:read |
Error Responses
401
Unauthorized
{
"error": "Unauthorized",
"message": "API access requires Team or Enterprise subscription",
"docs": "https://skillmill.ai/docs/api#authentication"
}403
Forbidden (Insufficient Scope)
{
"error": "Forbidden",
"message": "API key does not have 'skills:write' scope",
"required_scope": "skills:write"
}MCP Server Access
Connect AI coding agents like Claude Code, Cursor, and Windsurf to SkillMill via MCP (Model Context Protocol).
npx skillmill-mcpAvailable Tools
| Tool | Description |
|---|---|
| search_skills | Search the catalog by keyword |
| get_skill | Get detailed info about a specific skill |
| list_featured | Get featured/trending skills |
| get_safety_scan | Get safety scan results for a skill |
| list_harnesses | List available AI harnesses |
Claude Code Configuration
~/.claude/settings.json
{
"mcpServers": {
"skillmill": {
"command": "npx",
"args": ["skillmill-mcp"],
"env": {
"SKILLMILL_API_KEY": "sc_live_YOUR_API_KEY"
}
}
}
}Cursor Configuration
MCP Settings
{
"mcpServers": {
"skillmill": {
"command": "npx",
"args": ["skillmill-mcp"],
"env": {
"SKILLMILL_API_KEY": "sc_live_YOUR_API_KEY"
}
}
}
}