{"name":"io.github.codespar/mcp-xero","slug":"codespar-mcp-xero","title":null,"description":"MCP server for Xero — global cloud accounting: contacts, invoices, payments, items, reports","url":"https://mcp.market/server/codespar-mcp-xero","rating":null,"grade":"B","score":82,"certified":false,"status":"active","category":"finance","tags":["finance"],"presence":{"score":38,"stars":271,"forks":50,"downloads_week":null,"last_push_at":"2026-08-29T02:02:48.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/codespar/mcp-dev-latam","website":null,"version":"0.2.2","remotes":[],"packages":[{"registryType":"npm","identifier":"@codespar/mcp-xero","version":"0.2.2","transport":{"type":"stdio"},"environmentVariables":[{"description":"Xero OAuth2 access token (Bearer). Obtain via Xero OAuth2 flow; rotate on expiry.","isRequired":true,"format":"string","isSecret":true,"name":"XERO_ACCESS_TOKEN"},{"description":"Xero tenant/organization id sent in the Xero-tenant-id header on every request.","isRequired":true,"format":"string","name":"XERO_TENANT_ID"}]}],"tools":[{"name":"archive_contact","description":"Archive a Xero contact by setting ContactStatus=ARCHIVED. Archived contacts are hidden from default lists but history is preserved.","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_bank_transaction","description":"Create a bank transaction (SPEND = money out, RECEIVE = money in) directly on a bank account — for transactions without a matching invoice/bill (fees, transfers, one-off expenses).","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_contact","description":"Create a Xero contact (customer or supplier — Xero uses one unified Contact object with IsCustomer/IsSupplier flags inferred from transactions).","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_credit_note","description":"Create a credit note. Type ACCRECCREDIT = credit to a customer (offsets an AR invoice), ACCPAYCREDIT = credit from a supplier (offsets an AP bill).","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_invoice","description":"Create an invoice in Xero. Type ACCREC = accounts-receivable (sales invoice to a customer), ACCPAY = accounts-payable (bill from a supplier). Default Status=DRAFT; set AUTHORISED to issue immediately.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_item","description":"Create a Xero inventory/product item. Items can be sales-only, purchase-only, or tracked inventory (requires IsTrackedAsInventory + InventoryAssetAccountCode).","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_payment","description":"Record a payment against an invoice or credit note. Reduces the invoice's AmountDue and posts to the specified bank/payment account.","write_action":true,"price_micros":0,"input_schema":null},{"name":"email_invoice","description":"Email an AUTHORISED invoice to the contact's email address on file. Xero uses the default invoice email template. No body required.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_balance_sheet","description":"Retrieve the Balance Sheet report for the tenant. Returns assets, liabilities, and equity grouped by account as of a given date.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_contact","description":"Retrieve a single Xero contact by ContactID (UUID).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_invoice","description":"Retrieve a single invoice by InvoiceID (UUID) or InvoiceNumber.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_payment","description":"Retrieve a single payment by PaymentID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_accounts","description":"List the Xero chart of accounts. Use this to discover AccountCodes/AccountIDs needed for invoice line items and payments.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_bank_transactions","description":"List bank transactions (spend/receive entries on bank accounts). Supports where-clause filtering by BankAccount.AccountID, Type, Date, etc.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_contacts","description":"List Xero contacts. Supports Xero's where clause for server-side filtering (e.g. 'Name==\"ACME Ltd\"', 'IsCustomer==true').","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_credit_notes","description":"List credit notes. Supports where-clause filtering by Type, Status, Contact.ContactID, Date.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_invoices","description":"List invoices with optional Xero where-clause filtering. Common filters: Status==\"AUTHORISED\", Type==\"ACCREC\", Contact.ContactID==guid(\"...\"), Date>=DateTime(2026,1,1).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_items","description":"List all items/products in the Xero tenant. Supports where clause, e.g. 'IsSold==true'.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_organisations","description":"Retrieve the Xero organisation(s) the access token has access to — returns name, base currency, country, fiscal year start, tax settings, and edition.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_payments","description":"List payments recorded in Xero. Supports where-clause filtering (e.g. 'Status==\"AUTHORISED\"', 'Date>=DateTime(2026,1,1)').","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_tax_rates","description":"List tax rates configured in the Xero tenant. Use the returned TaxType codes on invoice/bill line items. Supports where clause like 'Status==\"ACTIVE\"'.","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_contact","description":"Update an existing Xero contact. POSTs to /Contacts/{ContactID}. Only include fields you want changed; Xero merges updates.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_invoice","description":"Update an existing invoice. POSTs to /Invoices/{InvoiceID}. DRAFT/SUBMITTED invoices are fully editable; AUTHORISED invoices have limited editable fields (Reference, DueDate, etc).","write_action":true,"price_micros":0,"input_schema":null},{"name":"void_invoice","description":"Void an invoice by setting Status=VOIDED. Only DRAFT, SUBMITTED, or AUTHORISED invoices with zero payments can be voided.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":82,"grade":"B","scanned_at":"2026-09-26T21:19:16.006Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-26T21:19:15.949Z","components":{"code":{"score":25,"max":25,"notes":["5 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 29 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@codespar/mcp-xero","version":"0.2.2","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":1,"publishedAt":"2026-06-22T18:40:26.278Z"}],"repo":{"found":true,"owner":"codespar","repo":"mcp-dev-latam","archived":false,"pushedAt":"2026-08-29T02:02:48Z","stars":271,"forks":50,"openIssues":10,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/269058982?v=4","ownerCreatedAt":"2026-03-18T00:40:56Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/269058982?v=4&s=128","source":"github"},"presence":{"stars":271,"forks":50,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-08-29T02:02:48.000Z","score":38}}}},"grade_history":[],"reviews":[]}