xero-mcp
Version:
A Model Context Protocol server allows Clients to interact with Xero
79 lines (78 loc) • 3.31 kB
JavaScript
import { XeroClientSession } from "../../XeroApiClient.js";
export const ListQuotesTool = {
requestSchema: {
name: "list_quotes",
description: "Retrieves sales quotes",
inputSchema: {
type: "object",
properties: {
dateFrom: {
type: "string",
description: "Filter for quotes after a particular date (YYYY-MM-DD)",
example: "2019-10-31",
},
dateTo: {
type: "string",
description: "Filter for quotes before a particular date (YYYY-MM-DD)",
example: "2019-10-31",
},
expiryDateFrom: {
type: "string",
description: "Filter for quotes expiring after a particular date (YYYY-MM-DD)",
example: "2019-10-31",
},
expiryDateTo: {
type: "string",
description: "Filter for quotes expiring before a particular date (YYYY-MM-DD)",
example: "2019-10-31",
},
contactID: {
type: "string",
description: "Filter for quotes belonging to a particular contact",
example: "00000000-0000-0000-0000-000000000000",
},
status: {
type: "string",
description: "Filter for quotes of a particular status (DRAFT, SENT, DECLINED, ACCEPTED, INVOICED)",
example: "DRAFT",
},
quoteNumber: {
type: "string",
description: "Filter by quote number",
example: "QU-0001",
},
order: {
type: "string",
description: "Order by any element",
example: "Status ASC",
},
page: {
type: "integer",
description: "Up to 100 quotes will be returned in a single API call",
example: 1,
},
},
},
},
requestHandler: async (request) => {
const dateFrom = request.params.arguments?.dateFrom;
const dateTo = request.params.arguments?.dateTo;
const expiryDateFrom = request.params.arguments?.expiryDateFrom;
const expiryDateTo = request.params.arguments?.expiryDateTo;
const contactID = request.params.arguments?.contactID;
const status = request.params.arguments?.status;
const page = request.params.arguments?.page;
const order = request.params.arguments?.order;
const quoteNumber = request.params.arguments?.quoteNumber;
const response = await XeroClientSession.xeroClient.accountingApi.getQuotes(XeroClientSession.activeTenantId(), undefined, dateFrom, dateTo, expiryDateFrom, expiryDateTo, contactID, status, page, order, quoteNumber);
const quotes = response.body.quotes || [];
return {
content: [
{
type: "text",
text: JSON.stringify(quotes),
},
],
};
},
};