@integrity-labs/xero-broker 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +7 -5
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -21189,18 +21189,20 @@ var XERO_WRITE_VERBS = [
|
|
|
21189
21189
|
"xero.bill.create",
|
|
21190
21190
|
"xero.bill.approve",
|
|
21191
21191
|
"xero.invoice.void",
|
|
21192
|
+
"xero.invoice.update",
|
|
21192
21193
|
"xero.contact.merge",
|
|
21193
|
-
"xero.bank_transaction.delete"
|
|
21194
|
+
"xero.bank_transaction.delete",
|
|
21195
|
+
"xero.manual_journal.create"
|
|
21194
21196
|
];
|
|
21195
21197
|
var verbSchema = external_exports.enum(XERO_WRITE_VERBS).describe(
|
|
21196
|
-
"The Xero write operation to perform. One of: xero.payment.create (pay an invoice/bill \u2014 moves money), xero.bill.create (create a payable), xero.bill.approve (DRAFT/SUBMITTED \u2192 AUTHORISED), xero.invoice.void (irreversible), xero.contact.merge (irreversible), xero.bank_transaction.delete (irreversible)."
|
|
21198
|
+
"The Xero write operation to perform. One of: xero.payment.create (pay an invoice/bill \u2014 moves money), xero.bill.create (create a payable), xero.bill.approve (DRAFT/SUBMITTED \u2192 AUTHORISED), xero.invoice.void (irreversible), xero.invoice.update (edit line items / unit amounts / tax treatment on an existing invoice or bill), xero.contact.merge (irreversible), xero.bank_transaction.delete (irreversible), xero.manual_journal.create (post a multi-line GL entry \u2014 reclasses, accruals, corrections; debits must equal credits)."
|
|
21197
21199
|
);
|
|
21198
21200
|
var payloadSchema = external_exports.object({
|
|
21199
21201
|
tenant_id: external_exports.string().min(1).max(128).describe(
|
|
21200
21202
|
"Xero organisation id (the Xero-Tenant-Id header value) the write lands in. NOT the Augmented team. Required \u2014 a missing tenant risks writing to the wrong set of books."
|
|
21201
21203
|
)
|
|
21202
21204
|
}).passthrough().describe(
|
|
21203
|
-
"Verb-specific fields. xero.payment.create: { invoice_id, account_id, amount, currency?, counterparty? }. xero.bill.create: { contact_id, amount, currency?, counterparty?, line_items_preview }. xero.bill.approve: { invoice_id, amount?, currency?, counterparty? }. xero.invoice.void: { invoice_id, invoice_number?, amount?, counterparty? }. xero.contact.merge: { source_contact_id, target_contact_id, source_name?, target_name? }. xero.bank_transaction.delete: { bank_transaction_id, amount?, counterparty? }. Always include tenant_id."
|
|
21205
|
+
"Verb-specific fields. xero.payment.create: { invoice_id, account_id, amount, currency?, counterparty? }. xero.bill.create: { contact_id, amount, currency?, counterparty?, line_items_preview }. xero.bill.approve: { invoice_id, amount?, currency?, counterparty? }. xero.invoice.void: { invoice_id, invoice_number?, amount?, counterparty? }. xero.invoice.update: { invoice_id, line_items?: [{ description, unit_amount, quantity?, account_code?, tax_type? }], line_amount_types? (Exclusive|Inclusive|NoTax), reference?, date?, due_date?, invoice_number?, counterparty?, amount?, currency? } \u2014 WARNING: line_items REPLACES the entire line set on the invoice, so send every line the invoice should end up with; omit the field entirely to leave the lines untouched. Use line_amount_types to fix a wrong tax treatment (e.g. a GST-inclusive total mistakenly entered on a Tax Exclusive line). xero.contact.merge: { source_contact_id, target_contact_id, source_name?, target_name? }. xero.bank_transaction.delete: { bank_transaction_id, amount?, counterparty? }. xero.manual_journal.create: { narration, journal_lines: [{ account_code, line_amount (positive=debit, negative=credit), description?, tax_type? }], date? (YYYY-MM-DD), status? (DRAFT|POSTED, default DRAFT), amount?, currency? } \u2014 lines must balance to zero. Always include tenant_id."
|
|
21204
21206
|
);
|
|
21205
21207
|
var reasonSchema = external_exports.string().min(1).max(2e3).describe(
|
|
21206
21208
|
"Why the agent needs to perform this write. Surfaced verbatim on the approval card for the human reviewer. Mandatory."
|
|
@@ -21238,7 +21240,7 @@ var awaitDecisionSchema = external_exports.object({
|
|
|
21238
21240
|
// package.json
|
|
21239
21241
|
var package_default = {
|
|
21240
21242
|
name: "@integrity-labs/xero-broker",
|
|
21241
|
-
version: "0.1.
|
|
21243
|
+
version: "0.1.5",
|
|
21242
21244
|
description: "Xero Broker \u2014 MCP server that routes money- and ledger-touching Xero writes through approval-core (HITL). Sibling to cloud-broker / channel-broker; the only write path for an agent once the vendor xero-mcp-server's write tools are stripped. ENG-4922.",
|
|
21243
21245
|
type: "module",
|
|
21244
21246
|
bin: {
|
|
@@ -21318,7 +21320,7 @@ server.tool(
|
|
|
21318
21320
|
);
|
|
21319
21321
|
server.tool(
|
|
21320
21322
|
"xero_request_approval",
|
|
21321
|
-
'Perform a Xero write (pay an invoice/bill, create or approve a bill, void an invoice, merge contacts, delete a bank transaction). This is the ONLY path you have to a Xero write \u2014 the vendor Xero tools are read-only on your host. The broker hard-denies (team denylist), auto-approves (rare, only if team policy auto-approves the verb tier), or routes to a human approver. On approval the broker executes the Xero call itself and returns the result. Returns { request_id, status, expires_at, denial_reason?, notification_status? }. status="auto_approve" or "active" means the write already happened (result_payload describes it). status="pending" means a human was paged via Slack \u2014 DO NOT poll; the broker pushes the resolution to you via direct-chat the moment it lands. status="denied" means the request was rejected (denial_reason explains). Pass { verb, payload, reason } and optionally ttl_seconds + source_context; always include payload.tenant_id. agent_id and run_id auto-fill from MCP env. Surface a brief, jargon-free acknowledgement to the user (e.g. "I need approval to pay that invoice \u2014 pinged an admin, will let you know") before returning control on a pending status. NEVER expose broker mechanics ("broker", "approval card", "request_id") in user-facing messages, and NEVER paste raw amounts into operator logs \u2014 the approval card already shows the amount to the human reviewer.',
|
|
21323
|
+
'Perform a Xero write (pay an invoice/bill, create or approve a bill, void an invoice, merge contacts, delete a bank transaction, post a manual journal). This is the ONLY path you have to a Xero write \u2014 the vendor Xero tools are read-only on your host. The broker hard-denies (team denylist), auto-approves (rare, only if team policy auto-approves the verb tier), or routes to a human approver. On approval the broker executes the Xero call itself and returns the result. Returns { request_id, status, expires_at, denial_reason?, notification_status? }. status="auto_approve" or "active" means the write already happened (result_payload describes it). status="pending" means a human was paged via Slack \u2014 DO NOT poll; the broker pushes the resolution to you via direct-chat the moment it lands. status="denied" means the request was rejected (denial_reason explains). Pass { verb, payload, reason } and optionally ttl_seconds + source_context; always include payload.tenant_id. agent_id and run_id auto-fill from MCP env. Surface a brief, jargon-free acknowledgement to the user (e.g. "I need approval to pay that invoice \u2014 pinged an admin, will let you know") before returning control on a pending status. NEVER expose broker mechanics ("broker", "approval card", "request_id") in user-facing messages, and NEVER paste raw amounts into operator logs \u2014 the approval card already shows the amount to the human reviewer.',
|
|
21322
21324
|
requestApprovalSchema.shape,
|
|
21323
21325
|
async (args) => {
|
|
21324
21326
|
try {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@integrity-labs/xero-broker",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Xero Broker — MCP server that routes money- and ledger-touching Xero writes through approval-core (HITL). Sibling to cloud-broker / channel-broker; the only write path for an agent once the vendor xero-mcp-server's write tools are stripped. ENG-4922.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|