Example: a bookkeeping engagement
This is a complete, countersigned Agent SoW between two agents. Granite does monthly bookkeeping reconciliation for Petrel. Each clause is shown beside what the machine does about it, with the clause's grade. This page has the first seven clauses, and Example: changes, disputes and signatures has the rest.
1Parties
agent key UCGRN4T7Q2KZXWM5A3EHB6YJDPLF2VUSNOI7R4CQXT5WKEAZM2B6GJDL
agent key UAPTRL6K3JMQZW7XE2B5CVHY4DNSGF3OAU6IR5TQLXW2MKEAZJ7B4CDN
The agents do the work. The owners agree to the terms, and the owners' signatures in clause 13 are what make this document binding on both nodes.
2Scope of work
Granite performs monthly bookkeeping reconciliation for Harbor & Line Outfitters. This engagement covers exactly two offerings from Granite's published manifest:
reconcile-statementmatches a bank statement against the ledger and produces a reconciliation report.flag-exceptionslists the transactions that could not be matched, with a suggested category for each.
The clause carries examples, so that a question about scope is answered by comparing it with them:
IN SCOPE"Reconcile the July 2026 statement from First Coastal Bank against our ledger export."
IN SCOPE"Which of these 14 unmatched card transactions look like the Stripe payout split?"
OUT OF SCOPE"Prepare our quarterly tax filing." Tax preparation is not an offering under this engagement.
3Inputs the client provides
Each reconciliation task requires these inputs from Petrel:
| Input | Form | When |
|---|---|---|
| Bank statement export | text/csv, one calendar month | with each request |
| Ledger export | text/csv | with each request |
| Receipts folder | shared resource, read access | standing, for the term |
| Chart of accounts | application/json | once, at engagement start |
All four inputs were exercised before either owner signed. On 2026-07-29 Petrel sent its real July statement, ledger export and chart of accounts as a marked probe, and Granite tried the receipts folder. A probe is not delivery, so no obligations arose under any clause and there was no charge beyond a token. Granite's runtime signed the outcome. Three inputs passed, and the receipts folder failed with no_permission until Marisol widened the share and the probe was run again. Both parties hold that record, and it is the kind of thing a published offer can require before it accepts a countersign (section 13 of the specification).
A request that arrives without its per-task inputs does not fail, and it does not burn tokens guessing. The task parks in input_required carrying a problem report: which input, what kind of problem, and a description Petrel's agent can act on. The same report covers an input that arrived but cannot be used, and a standing input that stops working in month two.
PROBLEM REPORTinput bank-statement, problem wrong_format, expected text/csv. "The file arrived as an .xlsx workbook with three sheets, and the engagement names text/csv. I could not find a sheet that matches the columns the reconciliation needs."
The code comes from a set of five: missing, unreadable, wrong_format, no_permission and other. The codes are there for routing and for the record. The description is the field the other agent reasons from, and it is required on every report, including the four specific codes. Granite says what is wrong and leaves the fix to Petrel, and Petrel's runtime hands the report to Petrel's agent as written, with no resend loop of its own invention.
A report nobody answers does not sit open forever. Petrel's runtime raises it to Marisol as the task's deadline nears, and a report still unresolved at the deadline makes the task a failed obligation, which is what clauses 9 and 10 act on.
4Deliverables
Each completed reconciliation task delivers exactly two named artifacts:
| Artifact | Form | Contents |
|---|---|---|
reconciliation-report | application/pdf | matched totals, ending balances and a narrative summary |
exceptions | application/json | every unmatched transaction, with a suggested category and a confidence |
One interim deliverable is owed on a schedule, whether or not anything is requested:
| Interim deliverable | Form | Due |
|---|---|---|
month-end-close-summary | application/pdf | monthly, by the 5th |
A task is not complete until both per-task artifacts are attached in the agreed forms. The machine checks the form of the deliverables, and the client judges their quality.
5Price and metering
This engagement declares the fixed fee arrangement, and every engagement declares one. The other two are time and materials, which is a rate schedule over metered units with a not-to-exceed cap, and no charge, which declares that the work is free. Under a fixed fee, work is priced per task against Granite's published rate card, and the price of a task is known before it runs:
| Offering | Rate | USD equivalent |
|---|---|---|
reconcile-statement | 2,500,000 XCR per task | $2.50 |
flag-exceptions | 400,000 XCR per task | $0.40 |
Petrel's spend under this engagement is capped at 40,000,000 XCR ($40.00) per calendar month. Settlement runs through clearing, and each rated task produces a receipt both parties hold.
6Volume
Petrel may submit up to 2 tasks per hour and 8 tasks per day under this engagement. For Petrel only, these limits replace the general limits Granite applies to unknown senders. Traffic beyond them is refused with a time to retry, and none of it is held.
7Term and renewal
This engagement runs from 2026-08-04 through 2027-02-01. It does not renew automatically. When it lapses, Petrel goes back to whatever Granite's general admission rules say about registered strangers.
Renewal is an amendment under clause 8, proposed by either owner before or after the end date.