Ramp MCP
by dragonkhoi
Verified
import { defineTool } from "../../utils/defineTool.js";
import { RampContext } from "../transactions/get_credit_card_transactions.js";
export const GET_RAMP_STATEMENTS_TOOL = defineTool<any, RampContext>((z) => ({
name: "get_ramp_statements",
description: "Retrieve Ramp statements with optional date filtering and pagination.",
inputSchema: {
from_date: z.string().optional().describe("Start date in ISO format (YYYY-MM-DD)"),
to_date: z.string().optional().describe("End date in ISO format (YYYY-MM-DD)"),
start: z.string().optional().describe("Token for pagination"),
page_size: z.number().optional().describe("Number of results per page")
},
handler: async (input, context) => {
// Build URL with query parameters
const url = new URL("https://api.ramp.com/developer/v1/statements");
// Add query parameters if provided
Object.entries(input).forEach(([key, value]) => {
if (value !== undefined) {
url.searchParams.append(key, String(value));
}
});
// Set up request options
const options = {
method: "GET",
headers: {
accept: "application/json",
authorization: `Bearer ${context.accessToken}`,
},
};
// Make the API request
const response = await fetch(url.toString(), options);
if (!response.ok) {
const errorText = await response.text();
throw new Error(
`HTTP error! status: ${response.status} - ${errorText}`
);
}
const data = await response.json();
return data;
},
}));