mcpengine/servers/freshbooks/src/tools/reports-tools.ts
2026-02-12 17:30:47 -05:00

111 lines
2.8 KiB
TypeScript

import type { FreshBooksAPIClient } from '../clients/freshbooks.js';
export const reportsTools = [
{
name: 'freshbooks_profit_loss_report',
description: 'Generate a profit and loss report for a date range',
inputSchema: {
type: 'object',
properties: {
start_date: {
type: 'string',
description: 'Start date (YYYY-MM-DD)',
},
end_date: {
type: 'string',
description: 'End date (YYYY-MM-DD)',
},
},
required: ['start_date', 'end_date'],
},
handler: async (client: FreshBooksAPIClient, args: any) => {
const result = await client.getProfitLossReport(args.start_date, args.end_date);
return {
content: [
{
type: 'text',
text: JSON.stringify(result, null, 2),
},
],
};
},
},
{
name: 'freshbooks_tax_summary_report',
description: 'Generate a tax summary report for a date range',
inputSchema: {
type: 'object',
properties: {
start_date: {
type: 'string',
description: 'Start date (YYYY-MM-DD)',
},
end_date: {
type: 'string',
description: 'End date (YYYY-MM-DD)',
},
},
required: ['start_date', 'end_date'],
},
handler: async (client: FreshBooksAPIClient, args: any) => {
const result = await client.getTaxSummaryReport(args.start_date, args.end_date);
return {
content: [
{
type: 'text',
text: JSON.stringify(result, null, 2),
},
],
};
},
},
{
name: 'freshbooks_aging_report',
description: 'Generate an accounts aging report showing outstanding balances',
inputSchema: {
type: 'object',
properties: {},
},
handler: async (client: FreshBooksAPIClient, args: any) => {
const result = await client.getAgingReport();
return {
content: [
{
type: 'text',
text: JSON.stringify(result, null, 2),
},
],
};
},
},
{
name: 'freshbooks_expense_report',
description: 'Generate an expense report for a date range',
inputSchema: {
type: 'object',
properties: {
start_date: {
type: 'string',
description: 'Start date (YYYY-MM-DD)',
},
end_date: {
type: 'string',
description: 'End date (YYYY-MM-DD)',
},
},
required: ['start_date', 'end_date'],
},
handler: async (client: FreshBooksAPIClient, args: any) => {
const result = await client.getExpenseReport(args.start_date, args.end_date);
return {
content: [
{
type: 'text',
text: JSON.stringify(result, null, 2),
},
],
};
},
},
];