# Autopilot

> What needs a person, Autopilot runs, receipt reminders and the investigator.

MCP toolset: `autopilot` (https://app.getoatmilk.com/api/mcp?toolset=autopilot)

## attention

- [`attention.list`](https://app.getoatmilk.com/docs/api/attention.list.md) — List what needs a person, grouped by the one action required (find a receipt, choose a category, confirm business use, confirm income or tax, match a payout, approve), with the newest items and the reason for each.

- [`attention.mine`](https://app.getoatmilk.com/docs/api/attention.mine.md) — List purchases on the caller's own cards that still need a receipt, newest first, with the card's last four digits, a page at a time: pass the returned nextCursor as cursor for the next page. total counts them all. A purchase someone already added a receipt for is left out while that receipt is matched. Finance assigns cardholders on each card; any member can read their own list and upload the receipts, with uploads.prepare receiptFor set to the purchase.

## autopilot

- [`autopilot.classify`](https://app.getoatmilk.com/docs/api/autopilot.classify.md) — Run the Autopilot rules, classifier, evidence and tax checks for up to 25 entries now. With apply false it returns what Oatmilk would do without writing anything; with apply true it saves the result like a normal Autopilot pass.

- [`autopilot.explain`](https://app.getoatmilk.com/docs/api/autopilot.explain.md) — Explain an entry's Autopilot state: the classification and its source, evidence and tax status, the single action a person needs to take, and every step Oatmilk already tried.

- [`autopilot.status`](https://app.getoatmilk.com/docs/api/autopilot.status.md) — Summarize Autopilot for the organization: bank lines not yet in the books, transactions waiting for AI, how many need a person, and the most recent jobs.

- [`autopilot.summary`](https://app.getoatmilk.com/docs/api/autopilot.summary.md) — A light Autopilot summary for Home: whether Autopilot is on, and how many transactions it finished in total and this week. Cheap to call; use autopilot.status for the full backlog.

## autopilot.jobs

- [`autopilot.jobs.cancel`](https://app.getoatmilk.com/docs/api/autopilot.jobs.cancel.md) — Cancel a queued or running Autopilot job. Work already applied stays applied.

- [`autopilot.jobs.get`](https://app.getoatmilk.com/docs/api/autopilot.jobs.get.md) — Read one Autopilot job with its progress: processed, finished automatically, needing a person, and failures.

- [`autopilot.jobs.list`](https://app.getoatmilk.com/docs/api/autopilot.jobs.list.md) — List recent Autopilot jobs with status, progress counts and timing.

- [`autopilot.jobs.start`](https://app.getoatmilk.com/docs/api/autopilot.jobs.start.md) — Start an Autopilot job. kind autopilot processes everything new or changed; kind rerun re-evaluates every transaction in an optional date range, account list or entry list, and onlyOpen skips finished ones. Transactions a person already finished or corrected are never overwritten. Returns the queued job.

## autopilot.rules

- [`autopilot.rules.list`](https://app.getoatmilk.com/docs/api/autopilot.rules.list.md) — List the merchant category rules Oatmilk learned from people's corrections, with the category, how many times a person confirmed it, and whether it is on.

- [`autopilot.rules.update`](https://app.getoatmilk.com/docs/api/autopilot.rules.update.md) — Turn a learned merchant rule on or off, or change its category, with id, expectedRevision and idempotencyKey. Future Autopilot passes use the change; finished transactions stay as they are.

## autopilot.settings

- [`autopilot.settings.get`](https://app.getoatmilk.com/docs/api/autopilot.settings.get.md) — Read the organization's Autopilot policy: whether AI runs after each sync, whether confident transactions are finished automatically, the smallest purchase that gets a receipt request, and how many days Oatmilk searches before asking.

- [`autopilot.settings.update`](https://app.getoatmilk.com/docs/api/autopilot.settings.update.md) — Change the Autopilot policy with expectedRevision and idempotencyKey: enabled, autoComplete, runAfterSync, receiptRequestMinimumMinor (minor units), evidenceGraceDays, and stripeMissingTax (ask, or no_tax to treat Stripe payments without any tax record as having no GST/HST). Changes that let Oatmilk finish more re-check open transactions.

## chase.preferences

- [`chase.preferences.get`](https://app.getoatmilk.com/docs/api/chase.preferences.get.md) — Read your own receipt reminders in this organization: status (active, paused or stopped) and pausedUntil. They're the emails listing purchases on your cards that still need a receipt. A pause that has run out reads as active.

- [`chase.preferences.update`](https://app.getoatmilk.com/docs/api/chase.preferences.update.md) — Change your own receipt reminders, like the links in every reminder: action pause (with days, 1 to 90, default 30), stop to turn them off, or resume to turn them back on, with idempotencyKey. It changes only your reminders, never anyone else's, and never the organization's reminder settings.

## chase

- [`chase.preview`](https://app.getoatmilk.com/docs/api/chase.preview.md) — Preview receipt reminders to cardholders without sending anything: the settings, each cardholder with purchases on their cards still missing receipts (how many, the oldest, the next tax deadline those purchases count toward, how often they're reminded right now, whether one is due today or when the next one goes out, and whether they paused or turned reminders off), the last reminders sent and the last replies with what the agent found in them.

- [`chase.run`](https://app.getoatmilk.com/docs/api/chase.run.md) — Send receipt reminders that are due now, or send one cardholder theirs now with userId. Each person gets at most one reminder a day, and never while they've paused or turned reminders off. Returns how many were sent and the refreshed preview.

## investigator

- [`investigator.accept`](https://app.getoatmilk.com/docs/api/investigator.accept.md) — Accept an investigator proposal with id, expectedRevision and idempotencyKey: applies its category, if any, and adds a note with the answer and its source to the entry through the normal entry update, then lets Autopilot recheck the entry.

- [`investigator.dismiss`](https://app.getoatmilk.com/docs/api/investigator.dismiss.md) — Dismiss an investigator proposal or open investigation with id, expectedRevision and idempotencyKey. The entry keeps its normal ask for a person.

- [`investigator.financialIssue`](https://app.getoatmilk.com/docs/api/investigator.financialIssue.md) — Investigate one current financial-report component using its exact period, componentKey, expectedSourceFingerprint and idempotencyKey. Reads scoped originals and completed source facts before one proposal-only AI call. Existing settings, tenant AI access and limits apply; connected-inbox searches additionally require existing caller consent and mailboxes:search access. Returns evidence, attempted reads, a purpose explanation if supported, and the precise fact a person must confirm. Never changes financial fields, accepts proposals, sends email, imports receipts or approves accounting treatment. Same-key replay rechecks current report and source generations.

- [`investigator.forEntry`](https://app.getoatmilk.com/docs/api/investigator.forEntry.md) — Read the investigation for one entry (entryId), if any: its status (awaiting the member, queued, running, proposed, no answer, accepted, dismissed or failed), what was tried, and the proposal with its answer, confidence, summary and evidence references (sender, subject, date and a short quote).

- [`investigator.overview`](https://app.getoatmilk.com/docs/api/investigator.overview.md) — Read the investigator: the caller's own consent to have their connected inbox searched and whether they have one connected, and for finance and administrators the organization's settings (on or off, email first or automatic, sources, lookback window in days, confidence needed to propose, maximum investigations a day, which asks it works on) and the 20 most recent investigations with their status and proposals.

- [`investigator.run`](https://app.getoatmilk.com/docs/api/investigator.run.md) — Run the investigator now for the organization, or investigate one entry (entryId) immediately. Members' consent and the daily limit still apply.

## investigator.consent

- [`investigator.consent.update`](https://app.getoatmilk.com/docs/api/investigator.consent.update.md) — Allow or stop the investigator searching the caller's own connected inbox (inboxAllowed), with idempotencyKey and optional expectedRevision. Only ever changes the caller's own consent.

## investigator.settings

- [`investigator.settings.update`](https://app.getoatmilk.com/docs/api/investigator.settings.update.md) — Change the investigator's settings with expectedRevision and idempotencyKey: enabled, mode (email_first or automatic), sources (inbox only for now), lookbackDays (1-365), proposeThreshold (0.5-0.99), maxPerDay (1-100) and askKinds (forward_receipt, contractor_invoice, confirm_business, choose_category, confirm_income).

## requests

- [`requests.create`](https://app.getoatmilk.com/docs/api/requests.create.md) — Ask an eligible person to resolve a record, optionally with a personal message. Find the eligible people and their assigneeUserId with requests.people first. Creates their personal task immediately and batches their notification email after ten minutes. Requires an idempotency key; one open request per record and recipient.

- [`requests.list`](https://app.getoatmilk.com/docs/api/requests.list.md) — List personal action requests, by default your open tasks. With mine false, list visible requests you sent or finance-visible requests for one record.

- [`requests.people`](https://app.getoatmilk.com/docs/api/requests.people.md) — List the eligible people (possible assignees) for one record: active people who can access it and help resolve its next action, each with the userId that requests.create takes as assigneeUserId. Includes the bound contractor for their own timesheet or profile.

- [`requests.update`](https://app.getoatmilk.com/docs/api/requests.update.md) — Complete your assigned request or cancel a request you sent. Administrators may resolve or cancel visible requests. Requires the current revision and an idempotency key.
