ai.sandbox.evaluate
Evaluate a supplied fixture against saved or draft automation settings without writing anything. kind routing classifies an email fixture; kind matching scores a receipt against bank candidates; kind document reads a real file exactly as the inbox does (file {filename, mimeType, contentBase64}, up to 2 MB: a receipt, invoice or statement as a PDF, image, office or text document, or an original .eml email, which is classified first): every page is turned into images with logos and signature graphics set aside, read twice with vision and settled by the stronger model when the readings disagree, and checked as the books would take it. It returns the classifier answer, the facts, the vision check, the entry or flags for each document, and the parts read. kind record reads a kept-record file (file as for document, recordKind tax_document, company_document or other) exactly as Tax › Records reads one, with the same pages, model, prompt and schema, and returns its fields, warnings, model, prompt version and parts; for a company record also describesCompany, wouldFill (filled, nothing_new, other_company or needs_admin) and the profile fields it fills or differs on. kind email runs the email-sorting classifier on an email already in the company inbox (messageId), rebuilt from what was stored when it arrived, and returns the new decision with what was decided at the time (example.stored). kind receipt runs the matcher on a receipt entry (entryId) against its current bank and card candidates (draft may also set autoApply). Both accept the same draft model and thresholds as routing and matching. Nothing is saved. Use it to test the pipeline without the dashboard, and to test custom models before saving them.
/api/v1/accounting/ai.sandbox.evaluatePermissions
Who can call it
Retries
MCP
accounting_ai_sandbox_evaluateFields
Shape 1: kind: "routing"
kind"routing"RequiredWhich kind of record or job this is.
mailboxKeystringat most 40 characters · Default "accounting"
fixtureobjectRequiredNo other fields
useSavedConfigbooleanDefault true
draftobjectNo other fields · Default {}
Shape 2: kind: "matching"
kind"matching"RequiredWhich kind of record or job this is.
fixtureobjectRequiredNo other fields
useSavedConfigbooleanDefault true
draftobjectNo other fields · Default {}
Shape 3: kind: "document"
kind"document"RequiredWhich kind of record or job this is.
fileobjectRequiredNo other fields
documentKindenumreceiptinvoicecredit_notestatementotherunknownuseSavedConfigbooleanDefault true
draftobjectNo other fields · Default {}
Shape 4: kind: "record"
kind"record"RequiredWhich kind of record or job this is.
recordKindenumRequiredtax_documentcompany_documentotherfileobjectRequiredNo other fields
Shape 5: kind: "email"
kind"email"RequiredWhich kind of record or job this is.
messageIdstring (ID)RequiredThe ID of the related record.
useSavedConfigbooleanDefault true
draftobjectNo other fields · Default {}
Shape 6: kind: "receipt"
kind"receipt"RequiredWhich kind of record or job this is.
entryIdstring (ID)RequiredThe ID of an accounting entry, from entries.list or attention.mine.
useSavedConfigbooleanDefault true
draftobjectNo other fields · Default {}
Example
curl https://app.getoatmilk.com/api/v1/accounting/ai.sandbox.evaluate \
-H "Authorization: Bearer $OATMILK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"kind": "routing",
"fixture": {
"subject": "example",
"text": "example",
"senderDomain": "example",
"attachmentNames": [
"Synthetic Ventures Inc."
]
}
}'{
"data": { … }
}Try it
Try it
Checks your input with this action’s real schema and answers like the API, with synthetic data. No key needed, and nothing changes.
curl https://app.getoatmilk.com/api/v1/accounting/ai.sandbox.evaluate \
-H "Authorization: Bearer $OATMILK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"kind": "routing",
"fixture": {
"subject": "example",
"text": "example",
"senderDomain": "example",
"attachmentNames": [
"Synthetic Ventures Inc."
]
}
}'More in AI and memory.