Skip to main content

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.
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.

Availability at this cut

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.

Current skills

Inspect all 30 current profiles, including exact parameters, canonical records, owners, artifacts, and failure outcomes.

Queued and blocked

Inspect all 58 unavailable profiles without mistaking a planned slash name for a callable skill.

Workflow map

See how skill domains sit around the Clerk, Bookkeeper, Auditor, Accountant, and Typewriter graphs.

Deliberate refusals

Read the 12 capability boundaries GreatBook will never turn into skills.

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

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 gives every excluded capability its exact outcome, canonical data, owner, mode, writer, and stated reason.