Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/org-quicko/skillset/llms.txt

Use this file to discover all available pages before exploring further.

Tags are short labels that writers attach to Resources for browsing and filtering. They are drawn from a single catalog shared across all Kinds and all Resources in the Registry — a Skill and an MCP Server can carry the same Tag. This page explains the Tag catalog, how Tags relate to Resources, and how to use Tag filtering across the API, CLI, and MCP server.

The Tag catalog

Every Tag has a stable id (a UUID) and a human-readable name. The id is what the Registry stores in its many-to-many join table; the name is what writers and agents type. Because every reference is by id:
  • Renaming a Tag changes it everywhere it is attached. A single PATCH /api/tags/{id} call updates the name for every Resource that carries that Tag.
  • Tags are Registry metadata, not written into a Resource’s frontmatter or payload. A SKILL.md file never contains a tag; Tags are attached after publish via the web interface or the API.
  • The catalog is shared across Kinds. There is one tag named engineering, not one per Kind.
Tag names are the human-facing identifier; Tag ids are internal opaque UUIDs. The CLI and MCP server resolve names to ids automatically — you never need to look up or store a Tag id yourself.

Tag name rules

Tag names are lowercase, following the same normalisation rule the Registry applies on match. A writer entering Testing is matched against testing. Tag names may contain lowercase alphanumerics and hyphens.

Managing Tags

Attaching Tags to a Resource

Writers attach or replace a Resource’s Tags via the web interface or the API. The operation is a full replacement — the body lists every Tag name the Resource should carry after the call; any Tag not in the list is detached.
PUT /api/resources/{id}/tags
Content-Type: application/json

{
  "tags": ["engineering", "code-quality", "testing"]
}
The server resolves each name to an existing catalog row, or creates a new one if the name is new.
{
  "tags": [
    { "id": "018f4a1b-...", "name": "engineering" },
    { "id": "018f4a2c-...", "name": "code-quality" },
    { "id": "018f4a3d-...", "name": "testing" }
  ]
}
A writer role is required — the same bar as publishing a Resource.

Renaming a Tag

Admins can rename a Tag via the API. The rename propagates to every Resource carrying that Tag.
PATCH /api/tags/{id}
Content-Type: application/json

{
  "name": "code-review"
}
An admin role is required — stricter than attaching a Tag, because a rename affects every Resource in the catalog.

Listing all Tags

The full Tag catalog is public — no authentication required. The CLI and MCP server fetch it automatically when resolving a name to an id.
GET /api/tags
{
  "items": [
    { "id": "018f4a1b-...", "name": "engineering" },
    { "id": "018f4a2c-...", "name": "code-quality" }
  ]
}

Filtering by Tag

Pass one or more tag_id query parameters to GET /api/resources. Tag ids are UUIDs; malformed values are silently dropped.
GET /api/resources?tag_id=018f4a1b-...&tag_id=018f4a2c-...
To filter by name, first resolve it via GET /api/tags, then pass the id.

Tag reference

GET /api/tags

Returns the full Tag catalog. Public — no authentication required. Used by the CLI and MCP to resolve names to ids.

PUT /api/resources/{id}/tags

Replaces a Resource’s full Tag set. Requires writer role. Creates new catalog entries for names not yet in the catalog.

PATCH /api/tags/{id}

Renames a Tag across the entire catalog. Requires admin role.

skillset://tags/{tag}

MCP resource template. Lists all Skills carrying a Tag, by Tag name.

Roles and permissions

ActionRequired role
Browse the Tag catalogNone (public)
Filter Resources by TagNone (public)
Attach Tags to a ResourceWriter
Rename a TagAdmin
Create a new Tag (via attach)Writer

Build docs developers (and LLMs) love