import { defineTool, assertProviderToken } from "@phake/mcp";
import { z } from "zod";
const listReposTool = defineTool({
name: "list_repos",
description: "List the authenticated user's repositories",
inputSchema: z.object({
sort: z.enum(["created", "updated", "pushed", "full_name"]).optional(),
perPage: z.number().int().min(1).max(100).default(30),
}),
requiresAuth: true,
handler: async (args, context) => {
assertProviderToken(context);
const url = new URL("https://api.github.com/user/repos");
url.searchParams.set("sort", args.sort ?? "updated");
url.searchParams.set("per_page", String(args.perPage));
const response = await fetch(url.toString(), {
headers: {
...context.resolvedHeaders,
"Accept": "application/vnd.github.v3+json",
},
});
return await response.json();
},
});