The workflow

Watch this workflow run through Kroy.

  1. The request.

    “Prepare Client Reminder”

  2. Who is asking.

    Kroy identifies the person in client services and Claude acting for them, within the delegation they gave it.

  3. Only what the task needs.

    Kroy retrieves client list and year-end dates (KroyDB), records received per client (SharePoint) and accounts status per client (Xero) from Xero, SharePoint and Outlook.

  4. Excluded by design.

    Payroll data, Internal manager notes and AML reviews never reach Claude. That boundary is Kroy’s, not an instruction to the AI.

  5. The proposed action.

    Permitted: read client status, read missing-documents list and create Outlook draft (outlook.draft.create).

  6. What Kroy refuses.

    Refused: send email (outlook.mail.send), read payroll and read another team’s clients.

  7. A person decides.

    Any external email is sent by a person, from the draft.

  8. State changes. Everything is recorded.

    The work is updated in Kroy, and every request — allowed or refused — is written to the audit trail.

Claude
Client services
Kroy
Xero
SharePoint
Outlook
Read client status
Send email
! Approval
AUDIT · STATE

Retrieved

  • Client list and year-end dates (KroyDB)
  • Records received per client (SharePoint)
  • Accounts status per client (Xero)

Excluded

  • Payroll data
  • Internal manager notes
  • AML reviews
  • Clients outside the user’s portfolio
Claude
Client services
Kroy
Xero
SharePoint
Outlook
Read client status
Send email
! Approval
AUDIT · STATE

Retrieved

  • Client list and year-end dates (KroyDB)
  • Records received per client (SharePoint)
  • Accounts status per client (Xero)

Excluded

  • Payroll data
  • Internal manager notes
  • AML reviews
  • Clients outside the user’s portfolio
Chasing year-end records with Claude, Xero and Outlook: the workflow through Kroy. The request.. Who is asking.. Only what the task needs.. Excluded by design.. The proposed action.. What Kroy refuses.. A person decides.. State changes. Everything is recorded..

What the AI can and cannot do

Data accessed

  • Client list and year-end dates (KroyDB)
  • Records received per client (SharePoint)
  • Accounts status per client (Xero)

Data excluded

  • Payroll data
  • Internal manager notes
  • AML reviews
  • Clients outside the user’s portfolio

Actions permitted

  • Read client status
  • Read missing-documents list
  • Create Outlook draft (outlook.draft.create)
  • Update the board with chase status

Actions refused

  • Send email (outlook.mail.send)
  • Read payroll
  • Read another team’s clients

Human approval required

  • Any external email is sent by a person, from the draft

Business situation

A London accountancy practice has dozens of clients with a 31 March year end. By early summer, a manager needs to know which of them still owe records, and to chase each one. Today that means cross-checking the practice’s client list, the documents received in SharePoint and the job status in Xero — then writing each reminder by hand.

Why existing tools alone are insufficient

An AI assistant can write a good reminder, but on its own it does not know which clients are outstanding. Pasting client lists into a chat puts client data wherever that chat is stored, and connecting the AI directly to Outlook gives it the power to send email on the practice’s behalf — which the practice’s AI policy does not allow.

Systems involved

  • KroyDB — the practice’s client list, portfolios and year-end dates.
  • Xero — accounts status per client.
  • SharePoint — records received per client.
  • Outlook — where reminder drafts are created.

Kroy architecture

Claude connects to Kroy. Xero and Microsoft 365 are connected to Kroy once, by the practice. The Prepare Client Reminder Skill is enabled for the client services team. Kroy holds every credential; Claude never receives them.

Workflow

  1. The manager asks Claude: “Which March year-end clients still owe us records?”
  2. Claude requests context through Kroy. Kroy checks the user, the agent, the user’s client portfolio and the Skill’s permissions.
  3. Kroy returns client status from KroyDB, Xero and SharePoint. Payroll is outside the Skill and is not returned.
  4. Claude lists the clients with outstanding records and what each is missing.
  5. The manager asks: “Prepare reminders.”
  6. Claude requests outlook.draft.create for each client. Kroy permits drafts.
  7. A request to send is refused: outlook.mail.send is not part of the Skill.
  8. The drafts appear in the manager’s Outlook. The board is updated with each client’s chase status.

Agent permissions

Claude acts only under delegation from the signed-in manager, and only within the Prepare Client Reminder Skill. It can see the manager’s clients, not the whole practice.

Human permissions

The manager can see their own portfolio. Sending remains with them. A partner can see chase status across portfolios on the board.

State changes

  • A chase record is added to each outstanding client.
  • The board shows which clients have a reminder drafted.
  • Each draft is linked to the client entity in Kroy.

Audit outcome

Kroy records each context request, each draft created and the refused send request — with the user, the agent, the Skill and the policy that decided each one.

External sharing

The practice can go one step further and give a client a guest workspace showing exactly what remains outstanding. See a client using their own AI.

Security considerations

  • Credentials for Xero and Microsoft 365 stay in Kroy.
  • The Skill excludes payroll and other portfolios by design, not by instruction to the AI.
  • The refusal to send is enforced by Kroy, so it holds even if the AI is asked to ignore it.

Setup requirements

  • A Kroy organisation with the client list imported into KroyDB.
  • Xero and Microsoft 365 connected to Kroy.
  • Claude connected to Kroy.
  • The Prepare Client Reminder Skill enabled for the team.

Try this with your own systems.

Join the waitlist