| [ |
| { |
| "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." |
| } |
| ] |
|
|