Read this organization's own DOCUMENTS (policies, procedures, records of the management system) and its REGISTERS (risks and non-conformities, standalone findings, controls, and every register kept as an Alchex Sheet). What you pass narrows it:
- `documentId` — open ONE document: its full text including tables, `sections` (the headings in order), `scopeClauses` (the clauses it is linked to), `outstandingDecisions` (the [bracketed] choices not made yet — they answer "what is still open?") and `controls` set up on it. Read it before changing it with write_document (quote its `content` exactly) or to quote a section. A clause is made compliant by its controls passing, not by linking a document.
- `recordId` — open ONE record: a risk, non-conformity or finding with its full fields; a control (a library id like C-KIT-ISO-27001-2022-MFA-CRITICAL-SYSTEMS, or a set-up control's id: its settings and recent runs); a run (its steps and receipts); a receipt ("R-1042"). Read it before proposing changes with write_record. "Are we compliant with 7.5?" is answered by reading these.
- `query` — the person NAMED or DESCRIBED something ("the access-control policy", "DOC-009", "RSK-014", "what does our policy say about MFA?"). Returns `documents` (title/code matches with their REAL id; `matched` says whether one is strong), `passages` (what bodies SAY about it) and `records` (risks and findings by code/name). If `records.ambiguous` is true, do NOT guess and do NOT write: name the close candidates in one line and let the person choose.
- `register` — ONE register's rows ("risks", "findings", "controls", or a register's name): its columns, the rows keyed by column with their ids, the total and counts of its choice columns. `where` narrows before the counts, so "open high risks overdue with no owner" is ONE call: [{column:"Status",is:"Open"},{column:"Severity",is:"High"},{column:"Due date",before:"today"},{column:"Owner",empty:true}]. `sortBy` orders it.
- `standard` — WHERE WE STAND on a standard (its id, its name like "ISO 27001", or "all"): READ IT FIRST on any resume ("where were we?", a Continue-with-Alchex prompt) and for "how compliant are we?", "are we ready for the audit?" (the upcoming certification audit), "what's next?", "which standards do we work with?". Lead with `readiness` and name its inputs, `controlsPassing` of `controlsCounted`: a control passes only when its latest run passed within its how-often. A document alone earns nothing; never count `documentedClauses` as compliance. Null `readiness` means the number cannot be read now: never estimate. `proof` is the page's own status per requirement (gap, needs_you, set_up, proven, not_applicable) with its `reason`; relay it, name the worst document. `openControls` (worst first: failed, partly_met, couldnt_run, stale, never_run) is what to fix next: open one by `recordId`, fix what its run found, run it again with run_control on the person's yes. `roadmap` is authored: relay its order, lead "what's next?" with `nextStep` (its ONE `nextAction`); `blocked` is advice, not a lock; `draft: true` means not reviewed yet; write one `missing` document per turn with write_document; `scopeGap` means link the existing one (its document check via write_record), never a second copy. `excludedClauses`/`excludedLines` are the SoA, out of scope with their reason, never gaps; scope is changed on the Compliance page.
With `clauseCode` ("why is 4.1 not passing?", "what is attached to 4.1?"): that clause's record alone. `status.lastCheck.rationale` is the check's own finding: relay it with its `requirement` and `sources`, never re-judge it; no `status` means no check has run. With `noEvidenceSince` (a date): `evidenceAge.stale` and `evidenceAge.neverChecked` in ONE call, never clause by clause.
- `me` (true) — WHO the person is in this workspace: the workspace's name, their `role` (OWNER, ADMIN or MEMBER), what it `can` and `cannot` do, and the `billing` they may see (plan, credit left and monthly allowance IN CREDITS, never money, and `environment`: a `sandbox` reading is test money, say so before any figure). An Admin or Owner also gets `settings`, invoices (credit purchases included) and auto-reload; a Member does not, as in the app. Read it for "what is my role?", "what can I do here?", "what plan are we on?", "how much credit is left?"; never guess a role.
- none — BROWSE: the library's `documents` (id, code, name, status Active/Archived, owner, version, nextReview, `approval` — the app's approval record: state, approvedVersion, approvedBy, approvedAt — openDecisions, updatedAt) and `registers` (how many records each holds, each sheet register with its DERIVED status). Use it for "what documents do we have?", "what registers do we keep?" and ALWAYS before saying a register is missing (a new one is made with the `createRegister` mode of write_record, only when they ask for it). Rows carry no publish flag: to answer a question ABOUT publishing, filter with `published`. A row's `approval` is the app's approval record (approved, changed_since_approval, in_review, never_approved): relay it, never infer approval from anything else. Never call a document a draft. For an unfinished document pass `unfinished: true`. The filters combine, so ask the whole question in ONE call. Archived documents are left out; `archivedHidden` says how many were. It is paged: while `hasMore` is true, call again with `offset` = `nextOffset`, and read every page before counting or inventorying the library. A zero `total` with filters carries `emptyNote`: relay which filter emptied it, never call the library empty.
A procedure, policy or instruction is a METHOD the organization follows: before improvising "how do we…" or "handle this finding", list them (documentType ["Procedure","Policy","Instruction"]), read the one that answers, follow it and cite the sentence that authorizes each step; its own method outranks a house guide.
A sheet register's status is its honest state; relay it, never soften it: `empty` means NOBODY has confirmed an entry. Suggested rows are proposals, never evidence.
For what a STANDARD requires use get_knowledge `standard` — a different corpus. NEVER invent an id: take it from the conversation or from a search here; if nothing matches, say so and ask which one.
read_document