For agents

API documentation

A free, read-only JSON API. No key, CORS open, responses cached for 60 seconds. bcdev.ai and bcbuilder.ai use it to find and install skills mid-build.

MCP server coming soon. Until then, point your agent at /llms.txt or use the REST endpoints below. Machine-readable: /openapi.json (OpenAPI 3.1) and /llms-full.txt.
Base URLhttps://bcskills.ai/api/v1
Good citizenship

Pin skills by permanent ID (sk_…) and verify the SHA-256 before installing. Send X-BCS-Client: name/version on downloads. Please keep to a few requests per second.

GET /api/v1/skills

Search skills

Published skills only, 24 per page by default. Searching by an exact slug or permanent ID returns that skill first.

ParameterDescription
qSearch text. Matches name, slug, summary, description, author and company, with typo tolerance.
categoryCategory slug, for example claude or bcdev-bcbuilder.
worksPlatform slug, for example claude-code, openclaw or m365-copilot.
typeskill, plugin, agent, solution or prompt-pack.
licenseMIT or PolyForm-Shield-1.0.0.
authorAuthor handle.
sortrelevance (default with q), popular (default), downloads, rating, newest, oldest or updated.
page / per_pagePage number, and page size up to 50.
Example
curl "https://bcskills.ai/api/v1/skills?q=invoice&works=claude&sort=popular"
Response
{
  "total": 1, "page": 1, "pages": 1, "perPage": 24, "sort": "popular",
  "items": [{
    "permanentId": "sk_7f3k9x2mqa",
    "slug": "post_sales_invoices_pdf",
    "name": "Post Sales Invoices from PDF",
    "summary": "Reads a customer PO PDF and drafts a sales invoice.",
    "category": { "slug": "claude", "name": "Claude" },
    "license": "MIT",
    "version": "1.0.0",
    "sha256": "9c1e…b7f2",
    "rating": { "average": 4.8, "count": 12 },
    "downloads": 340,
    "author": { "handle": "ajansari", "name": "AJ Ansari", "company": "OnlyCopilotFans" },
    "url": "https://bcskills.ai/skills/post_sales_invoices_pdf",
    "downloadUrl": "https://bcskills.ai/api/v1/skills/post_sales_invoices_pdf/download"
  }]
}
GET /api/v1/skills/{slug-or-id}

Skill detail

Accepts the current slug, an old slug, or the permanent ID (sk_…). Returns the description, platforms, the latest version with its checksum and file list, and every approved version.

Example
curl "https://bcskills.ai/api/v1/skills/sk_7f3k9x2mqa"
GET /api/v1/skills/{slug-or-id}/versions

List versions

Approved versions, newest first, each with checksum, size, changelog and a pinned download URL.

Example
curl "https://bcskills.ai/api/v1/skills/post_sales_invoices_pdf/versions"
GET /api/v1/skills/{slug-or-id}/download

Download a skill

Streams the zip. Without ?version= you get the latest approved version. The X-Checksum-SHA256 response header is the checksum to verify. Send X-BCS-Client so your downloads are counted as agent downloads. Downloads are counted once per person per day.

ParameterDescription
versionOptional semver, for example 1.0.0, to pin an exact version.
Example
curl -L -D - -H "X-BCS-Client: myagent/1.0" -o skill.zip "https://bcskills.ai/api/v1/skills/post_sales_invoices_pdf/download"
GET /api/v1/categories

List categories

All categories with their published skill counts.

Example
curl "https://bcskills.ai/api/v1/categories"
GET /api/v1/top

Leaderboards

Top skills for a month by unique downloads, or highest rated. When a month has no downloads yet the response falls back to all-time and sets fallbackToAllTime.

ParameterDescription
monthYYYY-MM. Defaults to the current month.
bydownloads (default) or rating. Rating counts only ratings created in that month and needs 3 per skill.
limit1 to 50, default 10.
Example
curl "https://bcskills.ai/api/v1/top?month=2026-11&by=downloads"
GET /api/v1/authors/{handle}

Author profile

Public profile, totals and the author's published skills.

Example
curl "https://bcskills.ai/api/v1/authors/ajansari"
GET /api/v1/editors-picks

Editors' Picks

The picks for a month, best first.

ParameterDescription
monthYYYY-MM. Defaults to the current month.
Example
curl "https://bcskills.ai/api/v1/editors-picks?month=2026-10"
Errors

Status codes

StatusMeaning
200Success.
400Invalid parameter. The body is { "error": "…" }.
429More than 120 requests a minute from one client. Wait for the Retry-After seconds.
404No such published skill or version.
5xxSomething broke on our side. Retry shortly.