feat(mcp): books.documents and books.document (P4b S2, read tools)
check / check (push) Canceled after 0s

books.documents lists invoices or bills, due date first, with what each
still owes and its status, all derived from its ledger lines that stand
(B-38): status open (default), overdue, paid, void, written_off,
overpaid or all; party and due_by narrow it (what to pay this week).
books.document shows one (ref invoice:N or bill:N) as of a day: lines
with projects, total, paid, discounted, written off, outstanding,
status, days overdue, and its timeline of every tagged ledger line, each
saying whether its entry still stands. The over-the-wire test
documents_list_and_timeline_over_the_wire covers a reversed payment;
the happy-path journey covers both output schemas.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T3gXMVt7XJPi6ens1or9Dj
This commit is contained in:
swaitsandClaude Opus 5.5 committed 2026-10-24 13:55:16 -06:00
1 parent 07f213c9e5
commit 7d2bf0b75f
6 files changed
+524 -3

No files matched your search

+3 -1
View File
@@ -56,7 +56,7 @@ const C: Needs = PostWhenConfirmed;
const K: Needs = PostForApprovalRules;
/// Every tool and what it needs (INVARIANT 1).
pub const TABLE: [(&str, Needs); 120] = [
pub const TABLE: [(&str, Needs); 122] = [
("books.handbook", R),
("books.start", R),
// Settings are committed at once: the settings commit of the plan.
@@ -167,6 +167,8 @@ pub const TABLE: [(&str, Needs); 120] = [
("books.pay_bill", P),
("books.void_document", P),
("books.control_check", R),
("books.documents", R),
("books.document", R),
("books.ar_aging", R),
("books.ap_aging", R),
("books.set_fx_rate", W),