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

# Queued and blocked MCP skills

> The 4 queued and 54 blocked GreatBook skill profiles, with the exact capability, data, owner, role, and release reason for each.

# Queued and blocked MCP skills

None of the 58 entries below is available to start. Four are queued and 54 are blocked. The first blocked profile defines the `blocked_read` YAML anchor; 56 later profiles inherit its empty parameter schema, empty artifact list, ready-for-review completion declaration, and shared failure set. Of those inheritors, 52 remain blocked and four override status to queued. Their individual capability, role, slash name, status, and blocked reason remain explicit.

This catalogue is pinned to skills registry `1.0.0` and capability registry `1.14.1`.

## Actions

<AccordionGroup>
  <Accordion title="/actions — Read the human action worklist [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.actions.read@1`. **Domain:** `actions`

    **Why it cannot start:** The typed human-worklist read is not released.

    **What it does:** Read the human action worklist. Read bounded bookkeeper and accountant tasks with explicit availability; an empty list is claimed only after a successful read.

    **Capability `greatbook.actions.worklist.read@1`**

    * Data: `action-item`
    * Owner: `langgraph_chat/devcenter/actions_api.py::tasks`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `actions.read`. Call name `/actions`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/update-action — Update one human action item [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.actions.update@1`. **Domain:** `actions`

    **Why it cannot start:** The guarded action-item update adapter is not released.

    **What it does:** Update one human action item. Transition one named action item with optimistic status rules; it cannot run a generic pipeline action.

    **Capability `greatbook.actions.task.update@1`**

    * Data: `action-item`
    * Owner: `langgraph_chat/devcenter/actions_api.py::patch_task`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/actions_api.py::patch_task`; audit record `action-item`.

    **Access and execution:** Requires `actions.write`. Call name `/update-action`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Agents

<AccordionGroup>
  <Accordion title="/propose-adjustment — Use the Accountant analysis workspace [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.adjustment.propose@1`. **Domain:** `agents`

    **Why it cannot start:** The Accountant graph launch contract is not released as a skill.

    **What it does:** Use the Accountant analysis workspace. Use the scoped agent or screen workflow within its declared read/propose boundary; the agent is never approval authority.

    **Capability `greatbook.agent.accountant.workspace@1`**

    * Data: `close-report`, `journal-workpaper`
    * Owner: `langgraph_chat/agents/accountant/graph.py::build_graph`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `accounting.read`. Call name `/propose-adjustment`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Audit

<AccordionGroup>
  <Accordion title="/audit-job-catalog — Read Auditor job definitions [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.audit.catalog@1`. **Domain:** `audit`

    **Why it cannot start:** The audit job catalogue read is released through MCP; this separate skill profile remains blocked pending an explicit skill promotion.

    **What it does:** Read Auditor job definitions. Read scheduled/manual audit job definitions, scopes, families, cadence, and enabled state.

    **Capability `greatbook.audit.job-catalog.read@1`**

    * Data: `audit-job-definition`
    * Owner: `langgraph_chat/devcenter/audit_service.py::list_job_defs`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `audit.read`. Call name `/audit-job-catalog`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/run-audit — Run an Auditor job now [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.audit.run@1`. **Domain:** `audit`

    **Why it cannot start:** The guarded audit-run adapter is not released.

    **What it does:** Run an Auditor job now. Enqueue and dispatch one named audit job; it may create run, finding, and action evidence but cannot post finance.

    **Capability `greatbook.audit.job.run@1`**

    * Data: `audit-run`, `audit-finding`, `action-item`
    * Owner: `langgraph_chat/devcenter/audit_api.py::run_now`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/audit_service.py::enqueue_manual`; audit record `audit-run`.

    **Access and execution:** Requires `audit.run`. Call name `/run-audit`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/retry-audit — Retry a failed Auditor run [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.audit.retry@1`. **Domain:** `audit`

    **Why it cannot start:** The guarded audit-retry adapter is not released.

    **What it does:** Retry a failed Auditor run. Retry one eligible failed run with durable attempt history; a retry cannot rewrite prior findings.

    **Capability `greatbook.audit.job.retry@1`**

    * Data: `audit-run`
    * Owner: `langgraph_chat/devcenter/audit_api.py::retry`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/audit_service.py::retry_run`; audit record `audit-run`.

    **Access and execution:** Requires `audit.run`. Call name `/retry-audit`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/acknowledge-finding — Acknowledge an audit finding [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.audit.acknowledge@1`. **Domain:** `audit`

    **Why it cannot start:** The guarded finding acknowledgement adapter is not released.

    **What it does:** Acknowledge an audit finding. Record that a named human has seen one finding without waiving, resolving, or repairing it.

    **Capability `greatbook.audit.finding.acknowledge@1`**

    * Data: `audit-finding`
    * Owner: `langgraph_chat/devcenter/audit_api.py::acknowledge`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/audit_service.py::acknowledge_finding`; audit record `audit-finding`.

    **Access and execution:** Requires `audit.decide`. Call name `/acknowledge-finding`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Bank

<AccordionGroup>
  <Accordion title="/reconcile-bank — Import normalized bank statement evidence [QUEUED]">
    **Status:** `queued`. **Skill ID:** `greatbook.skill.bank.reconcile@1`. **Domain:** `bank`

    **Why it cannot start:** The assurance read is released through MCP; end-to-end reconciliation still awaits the import, handoff, and proposal adapters.

    **What it does:** Import normalized bank statement evidence. Commit a validated normalized statement through W1; this does not match, reconcile, or post it.

    **Capability `greatbook.bank.statement.import@1`**

    * Data: `bank-evidence`
    * Owner: `langgraph_chat/devcenter/bankrec_service.py::import_lines`
    * Mode: `commit`
    * Writer: `backend/app/logics/finance/settlement.py::record_bank_evidence`; audit record none.

    **Capability `greatbook.bank.evidence.read@1`**

    * Data: `bank-evidence`, `settlement`, `recon-node`, `recon-edge`
    * Owner: `langgraph_chat/devcenter/bankrec_api.py::read_chain`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.
    * Purpose: Read bank evidence, settlements, and chain state. Read W2 summary, lines, settlements, and lineage with partial and stale states preserved.

    **Capability `greatbook.bank.match.decide@1`**

    * Data: `bank-match`, `bank-evidence`, `recon-edge`
    * Owner: `langgraph_chat/devcenter/bankrec_write_service.py::accept`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/bankrec_write_service.py::accept`; audit record `recon-match-audit`.
    * Purpose: Decide a bank reconciliation match. Review and commit an exact W3 proposal accept, reject, or undo through one outcome-specific staged adapter; manual matching and purpose stamping remain outside this boundary.

    **Capability `greatbook.bank.assurance.read@1`**

    * Data: `bank-assurance-result`
    * Owner: `langgraph_chat/recon/rules.py::unlinked_external`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.
    * Purpose: Read bank reconciliation assurance. Read the merged W4 bank-evidence residual assurance rules through a dedicated typed adapter; the rules always evaluate the whole organization and publish the aging ladder behind the verdict, while evidence\_ref, settlement\_ref and limit narrow only what is published.

    **Access and execution:** Requires `bank.read`, `matching.write`. Call name `/reconcile-bank`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/import-bank-statement — Import normalized bank statement evidence [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.bank.import-statement@1`. **Domain:** `bank`

    **Why it cannot start:** The evidence-only import adapter is not released.

    **What it does:** Import normalized bank statement evidence. Commit a validated normalized statement through W1; this does not match, reconcile, or post it.

    **Capability `greatbook.bank.statement.import@1`**

    * Data: `bank-evidence`
    * Owner: `langgraph_chat/devcenter/bankrec_service.py::import_lines`
    * Mode: `commit`
    * Writer: `backend/app/logics/finance/settlement.py::record_bank_evidence`; audit record none.

    **Access and execution:** Requires `bank.read`. Call name `/import-bank-statement`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/bank-handoff — Hand bank statement evidence into the product workflow [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.bank.handoff@1`. **Domain:** `bank`

    **Why it cannot start:** The guarded bank handoff adapter is not released.

    **What it does:** Hand bank statement evidence into the product workflow. Use the merged W6 evidence-only bank-statement handoff backend; no MCP handoff adapter or guarded write boundary is released.

    **Capability `greatbook.bank.handoff@1`**

    * Data: `typewriter-document`, `intake-item`, `bank-import-batch`
    * Owner: `langgraph_chat/devcenter/intake_service.py::approve`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/intake_service.py::approve`; audit record `intake-event`.

    **Access and execution:** Requires `bank.read`. Call name `/bank-handoff`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/propose-bank-matches — Generate deterministic bank-match proposals [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.bank.propose-matches@1`. **Domain:** `bank`

    **Why it cannot start:** The outcome-specific proposal adapter is not released.

    **What it does:** Generate deterministic bank-match proposals. Run the canonical matcher to create reviewable proposals; generation never accepts a match or posts the ledger.

    **Capability `greatbook.bank.match.propose@1`**

    * Data: `reconciliation-proposal`
    * Owner: `langgraph_chat/devcenter/bankrec_api.py::propose`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/bankrec_write_service.py::propose`; audit record `reconciliation-proposal`.

    **Access and execution:** Requires `matching.write`. Call name `/propose-bank-matches`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/manual-bank-match — Create a manual bank match [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.bank.manual-match@1`. **Domain:** `bank`

    **Why it cannot start:** The outcome-specific manual match adapter is not released.

    **What it does:** Create a manual bank match. Create one exact version-aware manual relationship between bank evidence and a canonical settlement.

    **Capability `greatbook.bank.match.manual@1`**

    * Data: `bank-match`, `recon-edge`
    * Owner: `langgraph_chat/devcenter/bankrec_api.py::manual_match`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/bankrec_write_service.py::manual_match`; audit record `recon-match-audit`.

    **Access and execution:** Requires `matching.write`. Call name `/manual-bank-match`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/unmatch-bank — Reverse a manual bank match [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.bank.unmatch@1`. **Domain:** `bank`

    **Why it cannot start:** The outcome-specific unmatch adapter is not released.

    **What it does:** Reverse a manual bank match. Withdraw one current match through canonical version-aware compensation; journal entries remain untouched.

    **Capability `greatbook.bank.match.unmatch@1`**

    * Data: `bank-match`, `recon-edge`
    * Owner: `langgraph_chat/devcenter/bankrec_api.py::unmatch`
    * Mode: `reverse`
    * Writer: `langgraph_chat/devcenter/bankrec_write_service.py::unmatch`; audit record `recon-match-audit`.

    **Access and execution:** Requires `matching.write`. Call name `/unmatch-bank`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/classify-bank-purpose — Classify bank evidence purpose [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.bank.classify-purpose@1`. **Domain:** `bank`

    **Why it cannot start:** The outcome-specific purpose adapter is not released.

    **What it does:** Classify bank evidence purpose. Stamp a bounded canonical purpose on one evidence line with optimistic versioning; classification is not matching or posting.

    **Capability `greatbook.bank.purpose.classify@1`**

    * Data: `bank-evidence`
    * Owner: `langgraph_chat/devcenter/bankrec_api.py::stamp_purpose`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/bankrec_write_service.py::purpose_stamp`; audit record `recon-match-audit`.

    **Access and execution:** Requires `matching.write`. Call name `/classify-bank-purpose`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/bank-reconciliation-state — Read the Matching workbench state [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.bank.state@1`. **Domain:** `bank`

    **Why it cannot start:** The canonical workbench-state read is released through MCP; this separate skill profile remains blocked pending an explicit skill promotion.

    **What it does:** Read the Matching workbench state. Read evidence queue, candidate context, settlements, chains, residuals, and current decisions without claiming a match.

    **Capability `greatbook.bank.reconciliation.read@1`**

    * Data: `bank-evidence`, `reconciliation-proposal`, `bank-match`, `settlement`
    * Owner: `langgraph_chat/devcenter/bankrec_read_service.py::summary`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `bank.read`. Call name `/bank-reconciliation-state`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/bank-assurance — Read bank reconciliation assurance [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.bank.assurance@1`. **Domain:** `bank`

    **Why it cannot start:** The W4 residual assurance read is released through MCP; this separate skill profile remains blocked pending an explicit skill promotion.

    **What it does:** Read bank reconciliation assurance. Read the merged W4 bank-evidence residual assurance rules through a dedicated typed adapter; the rules always evaluate the whole organization and publish the aging ladder behind the verdict, while evidence\_ref, settlement\_ref and limit narrow only what is published.

    **Capability `greatbook.bank.assurance.read@1`**

    * Data: `bank-assurance-result`
    * Owner: `langgraph_chat/recon/rules.py::unlinked_external`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `bank.read`. Call name `/bank-assurance`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/bank-workbench — Open the bank matching workbench [QUEUED]">
    **Status:** `queued`. **Skill ID:** `greatbook.skill.bank.workbench@1`. **Domain:** `bank`

    **Why it cannot start:** The workbench capability is queued.

    **What it does:** Open the bank matching workbench. Embed the W5 workbench only by extracting the accepted product component.

    **Capability `greatbook.bank.workbench.open@1`**

    * Data: `bank-match-workbench`
    * Owner: `W5::not_implemented`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `bank.read`. Call name `/bank-workbench`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Close

<AccordionGroup>
  <Accordion title="/close-adjustments — Read close adjustment workpapers [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.close.adjustments@1`. **Domain:** `close`

    **Why it cannot start:** The dedicated close-adjustment read is not released.

    **What it does:** Read close adjustment workpapers. Read proposed, approved, rejected, and posted adjustment workpapers with exact source-to-journal lineage.

    **Capability `greatbook.close.adjustments.read@1`**

    * Data: `close-adjustment`, `journal-workpaper`, `journal-entry`
    * Owner: `langgraph_chat/devcenter/close_service.py::list_adjustments`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `accounting.read`. Call name `/close-adjustments`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/period-history — Read fiscal-period transition history [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.period.history@1`. **Domain:** `close`

    **Why it cannot start:** The dedicated fiscal-period history read is released through MCP; this separate skill profile remains blocked pending an explicit skill promotion.

    **What it does:** Read fiscal-period transition history. Read close and reopen events, actors, reasons, versions, and late-arrival evidence for defined periods.

    **Capability `greatbook.period.events.read@1`**

    * Data: `fiscal-period`, `period-event`
    * Owner: `langgraph_chat/devcenter/close_service.py::list_events`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `close.read`. Call name `/period-history`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/create-fiscal-year — Create a fiscal-year period set [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.fiscal-year.create@1`. **Domain:** `close`

    **Why it cannot start:** The guarded fiscal-year creation adapter is not released.

    **What it does:** Create a fiscal-year period set. Idempotently create the canonical monthly fiscal periods for one year without closing any period.

    **Capability `greatbook.periods.create-year@1`**

    * Data: `fiscal-period`
    * Owner: `langgraph_chat/devcenter/close_api.py::create_periods`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/close_service.py::create_year`; audit record `period-event`.

    **Access and execution:** Requires `close.admin`. Call name `/create-fiscal-year`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/run-close — Run and store close readiness [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.close.run@1`. **Domain:** `close`

    **Why it cannot start:** The guarded Close-run adapter is not released.

    **What it does:** Run and store close readiness. Execute the canonical Close list for one defined period and store explicit ready, blocking, inconclusive, and error evidence; it does not close the period.

    **Capability `greatbook.close.run@1`**

    * Data: `close-run`, `close-report`
    * Owner: `langgraph_chat/devcenter/close_api.py::create_run`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/close_service.py::run_and_store`; audit record `close-run`.

    **Access and execution:** Requires `close.run`. Call name `/run-close`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Connectors

<AccordionGroup>
  <Accordion title="/connectors — Read connector readiness [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.connectors.read@1`. **Domain:** `connectors`

    **Why it cannot start:** The typed connector status read is not released.

    **What it does:** Read connector readiness. Read connector configuration presence, health status, latency, and missing-credential names without returning secrets.

    **Capability `greatbook.connectors.status.read@1`**

    * Data: `connector-definition`, `connector-health`
    * Owner: `langgraph_chat/devcenter/app.py::list_connectors`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `connectors.read`. Call name `/connectors`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/check-connectors — Run connector health checks [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.connectors.check@1`. **Domain:** `connectors`

    **Why it cannot start:** The typed connector health boundary is not released.

    **What it does:** Run connector health checks. Probe one or all configured connectors and store health evidence; probes cannot alter external business data.

    **Capability `greatbook.connectors.health-check@1`**

    * Data: `connector-health`
    * Owner: `langgraph_chat/devcenter/app.py::check_one`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/store.py::save`; audit record `connector-health`.

    **Access and execution:** Requires `connectors.check`. Call name `/check-connectors`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/authorize-quickbooks — Authorize the QuickBooks connector [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.quickbooks.authorize@1`. **Domain:** `connectors`

    **Why it cannot start:** Authorization remains a human redirect flow and is not a model skill.

    **What it does:** Authorize the QuickBooks connector. Complete the administrator-owned OAuth redirect flow without revealing tokens to the model or general users.

    **Capability `greatbook.connectors.quickbooks.authorize@1`**

    * Data: `connector-authorization`
    * Owner: `langgraph_chat/devcenter/app.py::qbo_connect`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/qbo_oauth.py::exchange_code`; audit record `connector-authorization`.

    **Access and execution:** Requires `connectors.authorize`. Call name `/authorize-quickbooks`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Dimensions

<AccordionGroup>
  <Accordion title="/dimensions — Read accounting dimensions and cost objects [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.dimensions.read@1`. **Domain:** `dimensions`

    **Why it cannot start:** The dimension catalogue read is released through MCP; this separate skill profile remains blocked pending an explicit skill promotion.

    **What it does:** Read accounting dimensions and cost objects. Read organization-scoped dimension definitions, active values, and live production/sample cost objects.

    **Capability `greatbook.dimensions.read@1`**

    * Data: `dimension-definition`, `dimension-value`, `cost-object`
    * Owner: `langgraph_chat/devcenter/dim_api.py::catalog`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `dimensions.read`. Call name `/dimensions`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/refresh-dimensions — Refresh organization dimensions [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.dimensions.refresh@1`. **Domain:** `dimensions`

    **Why it cannot start:** The guarded dimension refresh adapter is not released.

    **What it does:** Refresh organization dimensions. Idempotently seed approved dimension values from canonical masters while reporting unavailable sources and refusals.

    **Capability `greatbook.dimensions.seed@1`**

    * Data: `dimension-definition`, `dimension-value`
    * Owner: `langgraph_chat/devcenter/dim_api.py::seed`
    * Mode: `commit`
    * Writer: `langgraph_chat/dimensions/seeder.py::seed_org`; audit record `dimension-seed-result`.

    **Access and execution:** Requires `dimensions.admin`. Call name `/refresh-dimensions`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Epm

<AccordionGroup>
  <Accordion title="/epm — Read EPM budget and forecast results [QUEUED]">
    **Status:** `queued`. **Skill ID:** `greatbook.skill.epm.read@1`. **Domain:** `epm`

    **Why it cannot start:** No authoritative planning source is available.

    **What it does:** Read EPM budget and forecast results. Read budget and forecast results as exact decimal strings; the actuals carry a base-currency label and the budget half is withheld as incomparable units until a planning pipeline states its currency.

    **Capability `greatbook.epm.read@1`**

    * Data: `epm-budget`, `epm-forecast`
    * Owner: `langgraph_chat/devcenter/epm_api.py::router`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `planning.read`. Call name `/epm`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Files

<AccordionGroup>
  <Accordion title="/files — Read stored business files [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.files.read@1`. **Domain:** `files`

    **Why it cannot start:** The sensitive-data file read adapter is not released.

    **What it does:** Read stored business files. List stored file metadata and origin without claiming that storage performed classification, intake, or posting.

    **Capability `greatbook.files.read@1`**

    * Data: `stored-file`
    * Owner: `langgraph_chat/devcenter/uploads_api.py::list_uploads`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `files.read`. Call name `/files`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/store-file — Store a business file [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.files.store@1`. **Domain:** `files`

    **Why it cannot start:** The hashed file-reference write adapter is not released.

    **What it does:** Store a business file. Store one bounded file and metadata; storage does not run the Clerk, create intake, or authorize finance.

    **Capability `greatbook.files.store@1`**

    * Data: `stored-file`
    * Owner: `langgraph_chat/devcenter/uploads_api.py::upload`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/uploads_api.py::upload`; audit record `file-upload`.

    **Access and execution:** Requires `files.write`. Call name `/store-file`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Intake

<AccordionGroup>
  <Accordion title="/new-document — Read the intake review queue [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.documents.new@1`. **Domain:** `intake`

    **Why it cannot start:** Clerk graph execution is declared, but its typed intake review boundary is not released.

    **What it does:** Read the intake review queue. Search canonical intake items without treating chat threads or attachments as document identity.

    **Capability `greatbook.intake.queue.read@1`**

    * Data: `intake-item`
    * Owner: `langgraph_chat/devcenter/intake_api.py::queue`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `intake.read`. Call name `/new-document`. LangGraph `greatbook.clerk@1` with input map `{"files":"$parameters.files","expected_type":"$parameters.expected_type"}`.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "files"
      ],
      "properties": {
        "files": {
          "type": "array",
          "minItems": 1,
          "maxItems": 32,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "type",
              "id",
              "sha256"
            ],
            "properties": {
              "type": {
                "const": "file-upload"
              },
              "id": {
                "type": "integer",
                "minimum": 1
              },
              "sha256": {
                "type": "string",
                "pattern": "^[0-9a-f]{64}$"
              }
            }
          }
        },
        "expected_type": {
          "type": "string",
          "pattern": "^[a-z][a-z0-9_]{0,63}$"
        }
      }
    }
    ```

    **Returns:** `input_files` (type `file-reference-set`, not committable); `intake_review` (type `intake-review`, not committable)

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `invalid_input`, `unauthorized`, `permission_denied`, `bound_exceeded`, `graph_unavailable`, `inconclusive_read`
  </Accordion>

  <Accordion title="/intake-queue — Read the intake review queue [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.intake.queue@1`. **Domain:** `intake`

    **Why it cannot start:** The typed intake queue read is not released.

    **What it does:** Read the intake review queue. Search canonical intake items without treating chat threads or attachments as document identity.

    **Capability `greatbook.intake.queue.read@1`**

    * Data: `intake-item`
    * Owner: `langgraph_chat/devcenter/intake_api.py::queue`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `intake.read`. Call name `/intake-queue`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/intake-item — Read an intake item and its audit state [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.intake.item@1`. **Domain:** `intake`

    **Why it cannot start:** The typed intake item read is not released.

    **What it does:** Read an intake item and its audit state. Return one canonical intake item, audit trail, validation, and posting state.

    **Capability `greatbook.intake.item.read@1`**

    * Data: `intake-item`, `intake-event`
    * Owner: `langgraph_chat/devcenter/intake_api.py::detail`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `intake.read`. Call name `/intake-item`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/intake-masters — Look up intake master data [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.intake.masters@1`. **Domain:** `intake`

    **Why it cannot start:** The typed intake masters read is not released.

    **What it does:** Look up intake master data. Read bounded master kinds and values used to validate an extracted document; lookup never mutates a master.

    **Capability `greatbook.intake.masters.read@1`**

    * Data: `master-kind`, `master-record`
    * Owner: `langgraph_chat/devcenter/intake_api.py::master_lookup`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `intake.read`. Call name `/intake-masters`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/intake-audit — Read an intake item audit trail [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.intake.audit@1`. **Domain:** `intake`

    **Why it cannot start:** The intake audit read is released through MCP; this separate skill profile remains blocked pending an explicit skill promotion.

    **What it does:** Read an intake item audit trail. Read durable classification, review, launch, posting-gate, rejection, and handoff evidence for one intake item.

    **Capability `greatbook.intake.audit.read@1`**

    * Data: `intake-item`, `intake-event`, `intake-launch-outbox`
    * Owner: `langgraph_chat/devcenter/intake_service.py::get_audit`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `intake.read`. Call name `/intake-audit`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/approve-intake — Approve an intake item for bookkeeper launch [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.intake.approve@1`. **Domain:** `intake`

    **Why it cannot start:** The guarded intake approval adapter is not released.

    **What it does:** Approve an intake item for bookkeeper launch. Apply the canonical intake state transition and durable launch outbox; approval is not posting.

    **Capability `greatbook.intake.approve@1`**

    * Data: `intake-item`, `intake-event`, `intake-launch-outbox`
    * Owner: `langgraph_chat/devcenter/intake_api.py::approve`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/intake_service.py::approve`; audit record `intake-event`.

    **Access and execution:** Requires `intake.approve`. Call name `/approve-intake`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/reject-intake — Reject an intake item [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.intake.reject@1`. **Domain:** `intake`

    **Why it cannot start:** The guarded intake rejection adapter is not released.

    **What it does:** Reject an intake item. Record a named-human rejection and reason without launching the bookkeeper or posting finance.

    **Capability `greatbook.intake.reject@1`**

    * Data: `intake-item`, `intake-event`
    * Owner: `langgraph_chat/devcenter/intake_api.py::reject`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/intake_service.py::reject`; audit record `intake-event`.

    **Access and execution:** Requires `intake.reject`. Call name `/reject-intake`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/resubmit-intake — Correct and resubmit intake review facts [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.intake.resubmit@1`. **Domain:** `intake`

    **Why it cannot start:** The guarded intake resubmission adapter is not released.

    **What it does:** Correct and resubmit intake review facts. Create a reviewed intake revision after rejection or flags; it does not rewrite source evidence or post.

    **Capability `greatbook.intake.resubmit@1`**

    * Data: `intake-item`, `intake-event`
    * Owner: `langgraph_chat/devcenter/intake_api.py::resubmit`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/intake_service.py::resubmit`; audit record `intake-event`.

    **Access and execution:** Requires `intake.resubmit`. Call name `/resubmit-intake`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Ledger

<AccordionGroup>
  <Accordion title="/reverse-transaction — Reverse an exact supported business event [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.transaction.reverse@1`. **Domain:** `ledger`

    **Why it cannot start:** A closed read-before-stage workspace adapter has not been released.

    **What it does:** Reverse an exact supported business event. Append a checksum-bound reversal journal and atomically compensate the original AP/AR, settlement, inventory/costing, payroll, loan, tax/VAT, or adjustment state through its immutable journal link.

    **Capability `greatbook.accounting.event.reverse@1`**

    * Data: `reversal`, `proposal`, `journal-entry`, `subledger-entry`
    * Owner: `langgraph_chat/devcenter/reversal_proposal_api.py::approve_reversal_proposal`
    * Mode: `reverse`
    * Writer: `backend/app/services/business_reversal_service.py::BusinessReversalService.reverse`; audit record `journal-entry`.

    **Access and execution:** Requires `ledger.reverse`. Call name `/reverse-transaction`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/ledger-health — Read ledger freshness and coverage [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.ledger.health@1`. **Domain:** `ledger`

    **Why it cannot start:** The typed ledger health read is not released.

    **What it does:** Read ledger freshness and coverage. Read projection freshness, source coverage, and metadata without treating missing coverage as an empty book.

    **Capability `greatbook.ledger.health.read@1`**

    * Data: `ledger-freshness`, `ledger-coverage`
    * Owner: `langgraph_chat/devcenter/gl_api.py::freshness`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `ledger.read`. Call name `/ledger-health`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/control-account-tie — Read GL control-account reconciliation [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.control-account.tie@1`. **Domain:** `ledger`

    **Why it cannot start:** The typed control-account tie read is not released.

    **What it does:** Read GL control-account reconciliation. Read bounded control-account reconciliation separately from evidence Matching and preserve unavailable coverage.

    **Capability `greatbook.control-accounts.reconcile.read@1`**

    * Data: `control-account-tie`, `journal-entry`, `subledger-entry`
    * Owner: `langgraph_chat/devcenter/gl_api.py::reconciliation`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `ledger.read`. Call name `/control-account-tie`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Matching

<AccordionGroup>
  <Accordion title="/matching-graph — Read the reconciliation knowledge graph [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.bank.matching-graph@1`. **Domain:** `matching`

    **Why it cannot start:** The reconciliation ontology read is not released.

    **What it does:** Read the reconciliation knowledge graph. Read reconciliation summary, proposed and decided links, exact link detail, and bounded graph neighbourhoods without changing a decision.

    **Capability `greatbook.reconciliation.ontology.read@1`**

    * Data: `recon-node`, `recon-edge`, `bank-match`, `audit-finding`
    * Owner: `langgraph_chat/devcenter/recon_api.py::summary`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `bank.read`. Call name `/matching-graph`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Operations

<AccordionGroup>
  <Accordion title="/recover-intake-launch — Recover a failed intake handoff [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.intake.recover-launch@1`. **Domain:** `operations`

    **Why it cannot start:** The operator recovery adapter is not released.

    **What it does:** Recover a failed intake handoff. Retry or sweep the durable launch outbox using its lease and idempotency contract; abandoned jobs remain dead letters.

    **Capability `greatbook.intake.launch.recover@1`**

    * Data: `intake-launch-outbox`, `intake-event`, `bank-evidence`
    * Owner: `langgraph_chat/devcenter/intake_api.py::retry_launch`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/intake_service.py::retry_launch`; audit record `intake-event`.

    **Access and execution:** Requires `operations.retry`. Call name `/recover-intake-launch`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Payments

<AccordionGroup>
  <Accordion title="/payment-queue — Read pending payment approvals [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.payments.queue@1`. **Domain:** `payments`

    **Why it cannot start:** The typed payment queue read is not released.

    **What it does:** Read pending payment approvals. Read who is owed next and the payment task audit context; this legacy surface does not settle or post.

    **Capability `greatbook.payments.queue.read@1`**

    * Data: `payment-task`, `obligation`, `counterparty`
    * Owner: `langgraph_chat/devcenter/payments_api.py::pending`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `payments.read`. Call name `/payment-queue`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/decide-payment — Approve or reject a payment task [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.payments.decide@1`. **Domain:** `payments`

    **Why it cannot start:** The guarded payment decision adapter is not released.

    **What it does:** Approve or reject a payment task. Record a named-human payment-task decision; no outbound payment, settlement, or journal write is implied.

    **Capability `greatbook.payments.decide@1`**

    * Data: `payment-task`
    * Owner: `langgraph_chat/devcenter/payments_api.py::approve`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/payments_api.py::approve`; audit record `payment-task-audit`.

    **Access and execution:** Requires `payments.decide`. Call name `/decide-payment`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Posting

<AccordionGroup>
  <Accordion title="/posting-review — Read the trusted posting review state [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.posting.review@1`. **Domain:** `posting`

    **Why it cannot start:** The typed posting-review read is not released.

    **What it does:** Read the trusted posting review state. Read the server-rebuilt proposal, maker/checker attribution, guardrail refusal, and posted outcome without trusting checkpoint state.

    **Capability `greatbook.posting.review.read@1`**

    * Data: `intake-item`, `journal-workpaper`, `posting-proposal`, `journal-entry`
    * Owner: `langgraph_chat/devcenter/intake_service.py::posting_state`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `posting.read`. Call name `/posting-review`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/approve-posting — Approve a trusted posting proposal [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.posting.approve@1`. **Domain:** `posting`

    **Why it cannot start:** The guarded Bookkeeper gate adapter is not released.

    **What it does:** Approve a trusted posting proposal. Resume the existing trusted posting gate through the atomic ledger\_bridge transaction; LedgerService remains the only journal-entry writer.

    **Capability `greatbook.posting.approve@1`**

    * Data: `intake-item`, `intake-event`, `journal-entry`, `obligation`, `vat-register-entry`, `settlement`, `allocation`
    * Owner: `langgraph_chat/agents/bookkeeper/ledger_bridge.py::post_and_mark`
    * Mode: `commit`
    * Writer: `langgraph_chat/agents/bookkeeper/ledger_bridge.py::post_and_mark`; audit record `intake-event`.

    **Access and execution:** Requires `posting.approve`. Call name `/approve-posting`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/reject-posting — Reject a trusted posting proposal [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.posting.reject@1`. **Domain:** `posting`

    **Why it cannot start:** The guarded Bookkeeper rejection adapter is not released.

    **What it does:** Reject a trusted posting proposal. Record a named-human posting refusal before ledger mutation; the document must be re-filed when required.

    **Capability `greatbook.posting.reject@1`**

    * Data: `intake-item`, `intake-event`
    * Owner: `langgraph_chat/devcenter/intake_api.py::post_reject`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/intake_service.py::post_reject`; audit record `intake-event`.

    **Access and execution:** Requires `posting.reject`. Call name `/reject-posting`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Settlement

<AccordionGroup>
  <Accordion title="/ap-aging — Read obligations-authoritative AP aging [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.ap.aging@1`. **Domain:** `settlement`

    **Why it cannot start:** The AP-aging capability is released through MCP; this separate skill profile remains blocked pending an explicit skill promotion.

    **What it does:** Read obligations-authoritative AP aging. Read open supplier obligations, native/base balances, due dates, party resolution, pagination, and bounded AP-control tie evidence.

    **Capability `greatbook.ap.aging.read@1`**

    * Data: `obligation`, `ap-aging-bucket`, `control-account-tie`
    * Owner: `langgraph_chat/devcenter/ap_aging_service.py::list_ap_aging`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `ap.aging.read`. Call name `/ap-aging`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/cash-activity — Read cash subledger activity [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.cash.activity@1`. **Domain:** `settlement`

    **Why it cannot start:** The typed cash activity read is not released.

    **What it does:** Read cash subledger activity. Read cash-side subledger activity and links while keeping it subordinate to unified Transactions.

    **Capability `greatbook.cash.subledger.read@1`**

    * Data: `settlement`, `allocation`, `accounting-event`
    * Owner: `langgraph_chat/devcenter/gl_api.py::subledger_cash`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `ledger.read`. Call name `/cash-activity`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Statements

<AccordionGroup>
  <Accordion title="/statutory-report — Read financial statements [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.statutory.report@1`. **Domain:** `statements`

    **Why it cannot start:** The underlying statements read is still blocked on an unapproved read role and an unreleased typed MCP adapter.

    **What it does:** Read financial statements. Read P\&L, balance sheet, and cash-flow statements as exact decimal strings, with an explicit unavailable state instead of an unestablished or incomparable figure.

    **Capability `greatbook.statements.read@1`**

    * Data: `financial-statement`
    * Owner: `langgraph_chat/devcenter/stmt_api.py::router`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `statements.read`. Call name `/statutory-report`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/statements — Read financial statements [QUEUED]">
    **Status:** `queued`. **Skill ID:** `greatbook.skill.statements.read@1`. **Domain:** `statements`

    **Why it cannot start:** The statements read role is unapproved and the typed MCP adapter with its negative tests is not released.

    **What it does:** Read financial statements. Read P\&L, balance sheet, and cash-flow statements as exact decimal strings, with an explicit unavailable state instead of an unestablished or incomparable figure.

    **Capability `greatbook.statements.read@1`**

    * Data: `financial-statement`
    * Owner: `langgraph_chat/devcenter/stmt_api.py::router`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `statements.read`. Call name `/statements`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Typewriter

<AccordionGroup>
  <Accordion title="/draft-document — Compose or revise a Typewriter document [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.typewriter.draft@1`. **Domain:** `typewriter`

    **Why it cannot start:** The direct Typewriter graph skill boundary is not released.

    **What it does:** Compose or revise a Typewriter document. Validate and save one schema-constrained document version with exact calculations and immutable version lineage.

    **Capability `greatbook.typewriter.document.compose@1`**

    * Data: `typewriter-document`, `typewriter-version`
    * Owner: `langgraph_chat/devcenter/typewriter_api.py::create_document`
    * Mode: `commit`
    * Writer: `langgraph_chat/devcenter/typewriter_service.py::save_document`; audit record `typewriter-version`.

    **Access and execution:** Requires `typewriter.write`. Call name `/draft-document`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/preview-document — Preview a typed document [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.typewriter.preview@1`. **Domain:** `typewriter`

    **Why it cannot start:** The typed preview skill boundary is not released.

    **What it does:** Preview a typed document. Render a supported document's current form state without saving, approving, submitting, or posting it.

    **Capability `greatbook.typewriter.preview@1`**

    * Data: `typewriter-preview`
    * Owner: `langgraph_chat/devcenter/typewriter_api.py::preview`
    * Mode: `propose`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `typewriter.write`. Call name `/preview-document`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/export-document — Download exact Typewriter JSON or PDF [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.typewriter.export@1`. **Domain:** `typewriter`

    **Why it cannot start:** The typed export read is not released.

    **What it does:** Download exact Typewriter JSON or PDF. Download the constrained JSON envelope or immutable rendered PDF for one authorized document version.

    **Capability `greatbook.typewriter.document.export@1`**

    * Data: `typewriter-version`, `rendered-pdf`
    * Owner: `langgraph_chat/devcenter/typewriter_service.py::document_envelope`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `typewriter.read`. Call name `/export-document`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/document-history — Read Typewriter approval and version history [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.typewriter.history@1`. **Domain:** `typewriter`

    **Why it cannot start:** The Typewriter approval-trail read is released through MCP; this separate skill profile remains blocked pending an explicit skill promotion.

    **What it does:** Read Typewriter approval and version history. Read makers, approvers, exact versions, supersession, PDF identity, and intake handoff state.

    **Capability `greatbook.typewriter.approval-trail.read@1`**

    * Data: `typewriter-document`, `typewriter-version`, `typewriter-approval`, `intake-item`
    * Owner: `langgraph_chat/devcenter/typewriter_service.py::approval_trail`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `typewriter.read`. Call name `/document-history`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>

## Workflow

<AccordionGroup>
  <Accordion title="/recommend-workflow — Recommend a bounded workflow path [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.workflow.recommend@1`. **Domain:** `workflow`

    **Why it cannot start:** The provider-neutral recommendation read is not released as a skill.

    **What it does:** Recommend a bounded workflow path. Rank only registry-backed safe outcomes and explain permissions, prerequisites, artifacts, and gaps without executing them.

    **Capability `greatbook.workflow.recommend@1`**

    * Data: `workflow-recommendation`, `capability-gap`
    * Owner: `langgraph_chat/greatbook_mcp/workflows/service.py::WorkflowService.recommend`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `workflow.write`. Call name `/recommend-workflow`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/start-workflow — Start a durable safe workflow [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.workflow.start@1`. **Domain:** `workflow`

    **Why it cannot start:** The guarded outcome-start adapter is not released.

    **What it does:** Start a durable safe workflow. Create a registry-pinned, expiring workflow metadata record with bounded safe steps; it does not execute a domain capability.

    **Capability `greatbook.workflow.start@1`**

    * Data: `workflow-run`, `workflow-step`
    * Owner: `langgraph_chat/greatbook_mcp/workflows/service.py::WorkflowService.start`
    * Mode: `commit`
    * Writer: `langgraph_chat/greatbook_mcp/workflows/service.py::WorkflowService.start`; audit record `workflow-run`.

    **Access and execution:** Requires `workflow.write`. Call name `/start-workflow`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>

  <Accordion title="/workflow-status — Read durable workflow status [BLOCKED]">
    **Status:** `blocked`. **Skill ID:** `greatbook.skill.workflow.status@1`. **Domain:** `workflow`

    **Why it cannot start:** The provider-neutral status read is not released as a skill.

    **What it does:** Read durable workflow status. Read workflow revision, registry pin, expiry, safe steps, blockers, and artifacts without resuming it.

    **Capability `greatbook.workflow.status.read@1`**

    * Data: `workflow-run`, `workflow-step`
    * Owner: `langgraph_chat/greatbook_mcp/workflows/service.py::WorkflowService.get`
    * Mode: `read`
    * Writer: None (`writer: null`); no write authority is declared.

    **Access and execution:** Requires `workflow.write`. Call name `/workflow-status`. No execution target is declared, so the profile cannot start.

    **Parameter schema**

    ```json theme={null}
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {}
    }
    ```

    **Returns:** No artifacts are declared.

    **Completion and failure:** Completion state `ready_for_review`; canonical write implied `false`. Failures: `dependency_unreleased`, `stale_revision`, `canonical_refusal`
  </Accordion>
</AccordionGroup>
