OAUTH 2.0
ACCOUNTING
Moneybird gives your agent bookkeeping for your administration: create and send sales invoices and estimates, record purchase invoices and receipts, book bank transactions, log time, and read profit and loss, VAT, and debtors reports.
For more tools, view docs.
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";
const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
// Moneybird tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["moneybird"], toolNames: [
"moneybird_get_debtors_report",
"moneybird_list_sales_invoices",
"moneybird_send_sales_invoice"] },
pageSize: 100,
});
const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "List customers with open receivables and send their overdue invoices again" }] });import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["moneybird"] }, pageSize: 100,
});
const res = await openai.chat.completions.create({
model: "gpt-5",
messages: [{ role: "user", content: "List customers with open receivables and send their overdue invoices again" }],
tools,
});
// Execute the tool call with the user's vaulted Moneybird OAuth token
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["moneybird"] }, pageSize: 100,
});
const msg = await anthropic.messages.create({
model: "claude-sonnet-5",
max_tokens: 1024,
messages: [{ role: "user", content: "List customers with open receivables and send their overdue invoices again" }],
tools,
});
// Tool call runs with the user's vaulted Moneybird OAuth token
await sk.tools.executeTool(msg.content, "user_123");import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["moneybird"] }, pageSize: 100,
});
const agent = new Agent({
name: "bookkeeping_agent",
model: "gemini-2.5-pro",
instruction: "Moneybird tools scoped to this user",
tools,
});
await agent.run("List customers with open receivables and send their overdue invoices again");// shared token
audit → bot_service_account
// scalekit
audit → user_abc ✓