[ { "name": "query_ledger", "sig": "query_ledger(filters | sql) -> rows[]", "desc": "Read-only query over the task's ledger. Row cap enforced — the cap is what makes search strategy observable." }, { "name": "get_entry", "sig": "get_entry(entry_id) -> entry", "desc": "Full detail of one JE: lines, debits/credits, source, preparer, posting timestamp." }, { "name": "list_documents", "sig": "list_documents(entry_id) -> doc_meta[]", "desc": "Support metadata only — type, filename, pages. Never content." }, { "name": "open_document", "sig": "open_document(doc_id, page?) -> text", "desc": "Read a support document. Primary process signal: the evidence-access log separates a reasoned verdict from a lucky guess." }, { "name": "get_policy", "sig": "get_policy(topic) -> policy_text", "desc": "Policy clause: capitalisation thresholds, approval limits, cut-off rules, accrual methodology." }, { "name": "get_master_data", "sig": "get_master_data(type, id) -> record", "desc": "Chart of accounts, vendor master, period calendar, approval matrix, user roles. Returns status flags." }, { "name": "recompute", "sig": "recompute(expression) -> value", "desc": "Deterministic calculator. Presence or absence of a recomputation is itself gradeable." }, { "name": "aggregate", "sig": "aggregate(group_by, metric, filters) -> rows[]", "desc": "Population statistics: counts, sums, distributions, digit profiles. Required at L3, withheld at L1." }, { "name": "compare_period", "sig": "compare_period(account, period_a, period_b) -> delta", "desc": "Prior-period comparison for reasonableness and back-testing." }, { "name": "request_info", "sig": "request_info(entry_id, question) -> response | UNAVAILABLE", "desc": "Ask the simulated preparer for missing support. Some answers are UNAVAILABLE by design." }, { "name": "disposition", "sig": "disposition(entry_id, verdict, issue_type, rationale, evidence_ids[]) -> ack", "desc": "Terminal per entry. verdict ∈ {approve, flag, reject, insufficient_evidence}. Citing an unopened document scores as fabrication." }, { "name": "submit", "sig": "submit() -> end_episode", "desc": "Ends the episode. Undispositioned entries score as implicit approvals." } ]