pocketsmith-mcp
Version:
MCP server for managing budgets via PocketSmith API
206 lines (205 loc) • 6.45 kB
TypeScript
/**
* @fileoverview Get budget summary with period analysis from PocketSmith
*/
import { z } from "zod";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { RequestContext } from "../../../utils/index.js";
export declare const GetBudgetSummaryInputSchema: z.ZodObject<{
apiKey: z.ZodOptional<z.ZodString>;
accessToken: z.ZodOptional<z.ZodString>;
period: z.ZodEnum<["weeks", "months", "years"]>;
interval: z.ZodNumber;
startDate: z.ZodString;
endDate: z.ZodString;
}, "strip", z.ZodTypeAny, {
startDate: string;
endDate: string;
period: "weeks" | "months" | "years";
interval: number;
apiKey?: string | undefined;
accessToken?: string | undefined;
}, {
startDate: string;
endDate: string;
period: "weeks" | "months" | "years";
interval: number;
apiKey?: string | undefined;
accessToken?: string | undefined;
}>;
export type GetBudgetSummaryInput = z.infer<typeof GetBudgetSummaryInputSchema>;
export declare const GetBudgetSummaryResponseSchema: z.ZodObject<{
budgetSummary: z.ZodArray<z.ZodObject<{
category: z.ZodObject<{
id: z.ZodNumber;
title: z.ZodString;
}, "strip", z.ZodTypeAny, {
title: string;
id: number;
}, {
title: string;
id: number;
}>;
periods: z.ZodArray<z.ZodObject<{
period_label: z.ZodString;
budget_amount: z.ZodNumber;
actual_amount: z.ZodNumber;
difference: z.ZodNumber;
percentage_used: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
difference: number;
period_label: string;
budget_amount: number;
actual_amount: number;
percentage_used: number;
}, {
difference: number;
period_label: string;
budget_amount: number;
actual_amount: number;
percentage_used: number;
}>, "many">;
overall: z.ZodObject<{
total_budget: z.ZodNumber;
total_actual: z.ZodNumber;
total_difference: z.ZodNumber;
average_percentage: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
total_budget: number;
total_actual: number;
total_difference: number;
average_percentage: number;
}, {
total_budget: number;
total_actual: number;
total_difference: number;
average_percentage: number;
}>;
}, "strip", z.ZodTypeAny, {
category: {
title: string;
id: number;
};
periods: {
difference: number;
period_label: string;
budget_amount: number;
actual_amount: number;
percentage_used: number;
}[];
overall: {
total_budget: number;
total_actual: number;
total_difference: number;
average_percentage: number;
};
}, {
category: {
title: string;
id: number;
};
periods: {
difference: number;
period_label: string;
budget_amount: number;
actual_amount: number;
percentage_used: number;
}[];
overall: {
total_budget: number;
total_actual: number;
total_difference: number;
average_percentage: number;
};
}>, "many">;
summary: z.ZodObject<{
analysis_period: z.ZodString;
total_periods: z.ZodNumber;
overall_budget: z.ZodNumber;
overall_actual: z.ZodNumber;
overall_difference: z.ZodNumber;
overall_percentage: z.ZodNumber;
categories_over_budget: z.ZodNumber;
categories_under_budget: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
analysis_period: string;
total_periods: number;
overall_budget: number;
overall_actual: number;
overall_difference: number;
overall_percentage: number;
categories_over_budget: number;
categories_under_budget: number;
}, {
analysis_period: string;
total_periods: number;
overall_budget: number;
overall_actual: number;
overall_difference: number;
overall_percentage: number;
categories_over_budget: number;
categories_under_budget: number;
}>;
}, "strip", z.ZodTypeAny, {
summary: {
analysis_period: string;
total_periods: number;
overall_budget: number;
overall_actual: number;
overall_difference: number;
overall_percentage: number;
categories_over_budget: number;
categories_under_budget: number;
};
budgetSummary: {
category: {
title: string;
id: number;
};
periods: {
difference: number;
period_label: string;
budget_amount: number;
actual_amount: number;
percentage_used: number;
}[];
overall: {
total_budget: number;
total_actual: number;
total_difference: number;
average_percentage: number;
};
}[];
}, {
summary: {
analysis_period: string;
total_periods: number;
overall_budget: number;
overall_actual: number;
overall_difference: number;
overall_percentage: number;
categories_over_budget: number;
categories_under_budget: number;
};
budgetSummary: {
category: {
title: string;
id: number;
};
periods: {
difference: number;
period_label: string;
budget_amount: number;
actual_amount: number;
percentage_used: number;
}[];
overall: {
total_budget: number;
total_actual: number;
total_difference: number;
average_percentage: number;
};
}[];
}>;
export type GetBudgetSummaryResponse = z.infer<typeof GetBudgetSummaryResponseSchema>;
export declare function getBudgetSummaryLogic(params: GetBudgetSummaryInput, context: RequestContext): Promise<GetBudgetSummaryResponse>;
export declare const registerGetBudgetSummaryTool: (server: McpServer) => Promise<void>;