> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vinmake.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP skills

> What GreatBook's 88 MCP skill profiles do, which canonical data they touch, who owns them, and where they fit in the accounting workflows.

# MCP skills

GreatBook's skill registry turns reviewed capabilities into bounded, role-gated calls for MCP clients.
Each profile names an outcome, the canonical data and code authority behind it, its read or write posture, caller role, parameter schema, execution target, artifacts, completion meaning, and explicit failures.

<Warning>
  This documentation was compiled from **skills registry `1.0.0`**, pinned to **capability registry `1.14.1`**.
  The source cut is GreatBook `main` at `3c17397e120e91bda33d4bbb55d8963d82a17ba7`.
  If either registry version changes, treat these pages as stale until they are regenerated.
</Warning>

## Availability at this cut

| Status    | Count | May an MCP client start it?                                                      |
| --------- | ----: | -------------------------------------------------------------------------------- |
| `current` |    30 | Only when the authenticated, server-derived principal holds every required role. |
| `queued`  |     4 | No. It remains catalogue-visible but cannot start.                               |
| `blocked` |    54 | No. The profile names the unreleased dependency or safety boundary.              |

Fifty-two of the 54 blocked profiles inherit one YAML anchor, `blocked_read`, first defined by `greatbook.skill.transaction.reverse`.
That is one deliberate catalogue-wide release posture applied to adapterless, unsafe, or unfinished entries, not evidence of 52 independent runtime failures.
Each inheriting profile still declares its own skill ID, slash name, required capability, role, and reason.

<CardGroup cols={2}>
  <Card title="Current skills" icon="circle-check" href="/greatbook/skills/current">
    Inspect all 30 current profiles, including exact parameters, canonical records, owners, artifacts, and failure outcomes.
  </Card>

  <Card title="Queued and blocked" icon="circle-pause" href="/greatbook/skills/planned">
    Inspect all 58 unavailable profiles without mistaking a planned slash name for a callable skill.
  </Card>

  <Card title="Workflow map" icon="route" href="/greatbook/skills/workflows">
    See how skill domains sit around the Clerk, Bookkeeper, Auditor, Accountant, and Typewriter graphs.
  </Card>

  <Card title="Deliberate refusals" icon="shield-x" href="/greatbook/skills/refusals">
    Read the 12 capability boundaries GreatBook will never turn into skills.
  </Card>
</CardGroup>

## How skills are reached

Skills are reachable only through an MCP client today.
`greatbook_skills_list` searches profiles and `greatbook_skill_get` returns one exact profile; the current business profiles then bind to their declared MCP tool.
The registry's `slash` field is a stable prompt or command name, not proof that every host implements slash-command UX.
GreatBook web chat has no handler for these names, so typing `/skills` or `/book` there does not invoke the registry.

The production Q\&A desk is currently returning `401`, so these pages do not present web chat as a working path to skills.
No provider has exercised a skill end to end through the connector.
The current catalogue and live MCP ingress do not prove ChatGPT or Claude discovery, authorization, rendering, confirmation, or execution behavior.

## Roles decide what a current profile can do

Every profile declares its required role, and the server derives roles and organization from the authenticated identity rather than accepting them as parameters.
The currently observed production identity has four read roles and does not hold most action roles.
Consequently, a current action profile can still return `permission_denied`; catalogue status never expands the caller's grant.

`/reverse-transaction` shows both layers agreeing.
The skill is blocked, and its required `ledger.reverse` role is granted to nobody in production.
Its underlying capability owns a typed reversal, but no caller may reach it by supplying a role, writer, checksum, journal lines, or organization.

## How to read an entry

| Field in these pages                                      | Registry authority                                                           |
| --------------------------------------------------------- | ---------------------------------------------------------------------------- |
| Outcome and explanation                                   | Required capability `title` and `description`                                |
| Canonical data                                            | Capability `authority.canonical_records`                                     |
| Code owner                                                | Capability `authority.owner` and `authority.symbol`                          |
| Read, propose, confirm, commit, reverse, or admin posture | Capability `mode`                                                            |
| Canonical writer                                          | Capability `authority.writer`; `null` means no write authority is declared   |
| Caller access                                             | Skill `roles`                                                                |
| Invocation                                                | Skill `slash`, `execution`, and `parameters` JSON Schema                     |
| Result                                                    | Skill `artifacts`                                                            |
| Refusal or uncertainty                                    | Skill `failures`, `blocked_reason`, and `completion.canonical_write_implied` |

`inconclusive_read` is a documented outcome, not an error to hide.
For example, `/book` reads `native-books-family-summary` through `backend/app/logics/finance/books.py::family_summary`, has no writer, and may answer inconclusively when the canonical read cannot establish a result.

## What GreatBook refuses to make a skill

The registry excludes 12 capabilities on purpose: arbitrary action execution, raw finance writes, arbitrary HTTP route calls, connector or credential mutation, SQL execution, unguarded workflow resume, a fake universal transaction store, finding waiver without an authoritative undo, FX rate loading, reconciliation projection refresh, and two retired compatibility reads.

Those exclusions preserve reviewed writer boundaries, keep credentials and authority out of model context, and prevent a projection or compatibility route from becoming a second accounting authority.
The [refusal catalogue](/greatbook/skills/refusals) gives every excluded capability its exact outcome, canonical data, owner, mode, writer, and stated reason.

## Related

* [MCP ingress and client status](/greatbook/greatbook/mcp-connection-and-ui)
* [Capability lifecycle and anti-drift](/greatbook/greatbook/capability-registry)
* [The MCP interface](/greatbook/api/mcp)
