import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
import { RipplingClient } from "../clients/rippling-client.js";
import { RipplingApiError } from "../utils/errors.js";
export function registerActivityTools(
server: McpServer,
client: RipplingClient
): void {
server.tool(
"get_company_activity",
"Get company activity events such as employee changes, onboarding, and offboarding",
{
startDate: z
.string()
.optional()
.describe("Start date filter (ISO format, e.g. 2025-01-01)"),
endDate: z
.string()
.optional()
.describe("End date filter (ISO format, e.g. 2025-12-31)"),
limit: z
.number()
.min(1)
.max(1000)
.optional()
.describe("Max results to return (1-1000, default 100)"),
},
async ({ startDate, endDate, limit }) => {
try {
const activity = await client.getCompanyActivity({
startDate,
endDate,
limit,
});
return {
content: [
{
type: "text",
text: JSON.stringify(activity, null, 2),
},
],
};
} catch (error) {
if (error instanceof RipplingApiError) return error.toToolResult();
throw error;
}
}
);
}