@integrity-labs/xero-broker 0.1.3 → 0.1.4
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 +6 -5
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -21190,17 +21190,18 @@ var XERO_WRITE_VERBS = [
|
|
|
21190
21190
|
"xero.bill.approve",
|
|
21191
21191
|
"xero.invoice.void",
|
|
21192
21192
|
"xero.contact.merge",
|
|
21193
|
-
"xero.bank_transaction.delete"
|
|
21193
|
+
"xero.bank_transaction.delete",
|
|
21194
|
+
"xero.manual_journal.create"
|
|
21194
21195
|
];
|
|
21195
21196
|
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)."
|
|
21197
|
+
"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), xero.manual_journal.create (post a multi-line GL entry \u2014 reclasses, accruals, corrections; debits must equal credits)."
|
|
21197
21198
|
);
|
|
21198
21199
|
var payloadSchema = external_exports.object({
|
|
21199
21200
|
tenant_id: external_exports.string().min(1).max(128).describe(
|
|
21200
21201
|
"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
21202
|
)
|
|
21202
21203
|
}).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."
|
|
21204
|
+
"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? }. 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
21205
|
);
|
|
21205
21206
|
var reasonSchema = external_exports.string().min(1).max(2e3).describe(
|
|
21206
21207
|
"Why the agent needs to perform this write. Surfaced verbatim on the approval card for the human reviewer. Mandatory."
|
|
@@ -21238,7 +21239,7 @@ var awaitDecisionSchema = external_exports.object({
|
|
|
21238
21239
|
// package.json
|
|
21239
21240
|
var package_default = {
|
|
21240
21241
|
name: "@integrity-labs/xero-broker",
|
|
21241
|
-
version: "0.1.
|
|
21242
|
+
version: "0.1.4",
|
|
21242
21243
|
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
21244
|
type: "module",
|
|
21244
21245
|
bin: {
|
|
@@ -21318,7 +21319,7 @@ server.tool(
|
|
|
21318
21319
|
);
|
|
21319
21320
|
server.tool(
|
|
21320
21321
|
"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.',
|
|
21322
|
+
'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
21323
|
requestApprovalSchema.shape,
|
|
21323
21324
|
async (args) => {
|
|
21324
21325
|
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.4",
|
|
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": {
|