---
title: "Get Capabilities"
method: GET
path: "/capabilities"
---

# Get Capabilities

`GET /capabilities`

## Request

- Base URL: `https://api.colourmemory.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.colourmemory.com/capabilities`
- Auth: none declared

Live inventory of all active endpoints and MCP tools.
Use this to discover what the API can do before making calls.

Fix 4 step 3 (Session 2B-i): mcp_tool_count/mcp_tool_names now come
from current_public_tools() -- the same canonical-registry-driven,
rollback-flag-aware source /health, tools/list, and system_status all
use -- rather than the raw _MCP_TOOLS list, which included internal-
only tools never actually reachable via tools/list. That mismatch
(this endpoint silently claiming a different tool count than /health)
was itself a real instance of the "drift between MCP, REST, and
documentation" this session's brief opens with.

Fix 6: schema_hash is served as this response's ETag. A client
sending If-None-Match with a still-current hash gets a bare 304, not
a re-fetched body -- and critically, a CHANGED schema can never keep
serving an old body under an old ETag, since the ETag IS the content
hash, not an independently-tracked version counter that could drift
from what's actually being returned.

## Response `200`

Successful Response

- unknown

---

[API](https://skmtc.dev/colourmemory/apis/colour-memory-api.md) · [All operations](https://skmtc.dev/colourmemory/apis/colour-memory-api/llms.txt) · [OpenAPI document](https://skmtc.dev/colourmemory/apis/colour-memory-api/revisions/4ba028f64042?raw)
