import { z } from "zod";
import { experimental_PaidMcpAgent as PaidMcpAgent } from "@stripe/agent-toolkit/cloudflare";
export function getPermitRequirementsTool(agent: PaidMcpAgent<Env, any, any>) {
const server = agent.server;
// @ts-ignore
server.tool(
"get_permit_requirements",
"Detailed permit requirements, fees, and processes. Include inspector scheduling and approval workflows. Calculate costs and timelines for professional projects.",
{
projectType: z.enum(["new-construction", "renovation", "addition", "electrical", "plumbing", "mechanical", "demolition", "sign", "special-event", "temporary"]).describe("Type of permit required"),
jurisdiction: z.string().describe("Municipality, county, or state jurisdiction"),
projectScope: z.string().describe("Detailed description of the work to be performed"),
projectValue: z.number().optional().describe("Estimated project value for fee calculation"),
projectArea: z.number().optional().describe("Project area in square feet"),
includeFees: z.boolean().optional().describe("Include detailed fee breakdown"),
includeTimeline: z.boolean().optional().describe("Include processing timeline and inspection schedule"),
},
async ({ projectType, jurisdiction, projectScope, projectValue, projectArea, includeFees, includeTimeline }: {
projectType: string;
jurisdiction: string;
projectScope: string;
projectValue?: number;
projectArea?: number;
includeFees?: boolean;
includeTimeline?: boolean;
}) => {
// This would integrate with municipal permit systems to retrieve requirements
// For now, return a structured response indicating the permit request
const permitParams = {
projectType,
jurisdiction,
projectScope,
projectValue: projectValue || "To be determined",
projectArea: projectArea || "To be determined",
includeFees: includeFees || true,
includeTimeline: includeTimeline || true
};
return {
content: [
{
type: "text",
text: `Permit Requirements Request\n\nProject Type: ${permitParams.projectType}\nJurisdiction: ${permitParams.jurisdiction}\nProject Scope: ${permitParams.projectScope}\nProject Value: ${permitParams.projectValue}\nProject Area: ${permitParams.projectArea}\n\nThis tool would provide comprehensive permit information including:\n\n- Required permit types and applications\n- Fee calculations and payment methods\n- Required documentation and plans\n- Professional stamp requirements\n- Inspection requirements and scheduling\n- Approval workflow and timeline\n- Appeal processes\n- Code compliance prerequisites\n- Professional consultation requirements\n- Expedited processing options\n\nAlways verify current fee schedules and processing times with the jurisdiction.`
}
]
};
}
);
}